home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / system / ctrlalt.zip / CTRLALT.DOC < prev    next >
Text File  |  1986-04-09  |  101KB  |  2,523 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.                  DOCUMENTATION
  11.  
  12.  
  13.                       FOR
  14.  
  15.  
  16.                     CTRLALT
  17.  
  18.  
  19.  
  20.                  **********************
  21.                   Version 1.0
  22.                  **********************
  23.  
  24.  
  25.                by Barry Simon and Richard Wilson
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.               Documentation for CTRLALT
  64.  
  65.  
  66.  
  67.  
  68.  
  69.                    TABLE OF CONTENTS
  70.  
  71.  
  72.         Chapter I:INTRODUCTION.................................1
  73.            I.1 Features........................................1
  74.            I.2 Files in the CTRLALT package and
  75.              installing CTRLALT............................2
  76.            I.3 Notation........................................3
  77.            I.4 Should you read the documentation?..............4
  78.            I.5 A Bow and Two Disclaimers.......................4
  79.            I.6 Usage Notes.....................................5
  80.            I.7 A Warning.......................................5
  81.  
  82.         Chapter II:TWO MONITOR SUPPORT.........................7
  83.            II.1 Main Commands..................................7
  84.            II.2 Usage Notes....................................7
  85.  
  86.         Chapter III:TABLES.....................................9
  87.            III.1 The Character Tables..........................9
  88.            III.2 Entering Keystrokes from ASCII Tables.........9
  89.            III.3 The aTtribute and aNsi Tables................10
  90.            III.4 ASCII codes and Scan codes...................11
  91.            III.5 Usage Notes..................................12
  92.  
  93.         Chapter IV:PRINT CONTROL MODE.........................15
  94.            IV.1 Line Marking..................................15
  95.            IV.2 Printing the Marked Lines.....................15
  96.            IV.3 Sending Control Codes to Your Printer.........15
  97.            IV.4 Usage Notes...................................16
  98.  
  99.         Chapter V:MARKING MODE................................19
  100.            V.1 Marking a Rectangle............................19
  101.            V.2 What you can do with the Marked Box............19
  102.            V.3 Inserting the Large Buffer.....................20
  103.            V.4 Usage Notes....................................22
  104.  
  105.         Chapter VI:BOX DRAWING................................24
  106.            VI.1 The Alt Numeric Keypad........................24
  107.            VI.2 Box drawing characters........................25
  108.            VI.3 Other graphics characters.....................26
  109.            VI.4 Cursor motion and <Grey +/->..................26
  110.            VI.5 Usage Notes...................................27
  111.  
  112.         Chapter VII:THE EMERGENCY EXIT........................28
  113.            VII.1 A Powerful but Dangerous Command.............28
  114.            VII.2 Fouled Interrupts............................29
  115.            VII.3 RELEASE: A Safety Valve......................31
  116.  
  117.  
  118.       Table of Contents                        Page i
  119.  
  120.  
  121.  
  122.  
  123.               Documentation for CTRLALT
  124.  
  125.  
  126.            VII.4 Usage Notes..................................31
  127.  
  128.         Chapter VIII:COMMAND SUMMARY..........................34
  129.  
  130.         Chapter IX:CUSTOMIZING CTRLALT........................35
  131.            IX.1 The Procedure.................................35
  132.            IX.2 Fundamental key combination...................35
  133.            IX.3 Command keys..................................36
  134.            IX.4 Table colors..................................37
  135.            IX.5 Table location................................37
  136.            IX.6 Copy attributes...............................37
  137.            IX.7 XOR attributes................................38
  138.            IX.8 Printer escape sequences......................38
  139.            IX.9 Using DEBUG...................................38
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.       Table of Contents                       Page ii
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.                 Chapter I: INTRODUCTION
  186.  
  187.  
  188.       I.1 Features
  189.  
  190.         This documentation for CTRLALT can be printed out on most
  191.       printers by typing the command
  192.         copy ctrlalt.doc prn
  193.       at the DOS command line.
  194.  
  195.         CTRLALT is a collection of resident utilities taking about
  196.       7K of RAM.  Its features include the following:
  197.         -Two monitor support: copy the active monitor to your
  198.           inactive monitor on a two monitor system even inside a
  199.           running program making your second monitor a useful scratch
  200.           pad; other dual monitor support included.
  201.         -Popup tables: One screen (indeed partial screen) tables of
  202.           ASCII codes, color attributes, ANSI color codes and
  203.           keyboard scan codes.
  204.         -Entry of non-keyboard characters: a logical and convenient
  205.           way of entering the IBM graphics drawing characters.  Any
  206.           character can be picked off the resident ASCII table.
  207.         -Cut and Paste: Resident cut and paste facilities; with one
  208.           keystroke, you can enter a mode which allows you to mark
  209.           a box (on either screen, if you have two) which you can
  210.           save in a buffer and later insert in any program.  You can
  211.           print part or all of your screen (or screens on a dual
  212.           monitor system).
  213.         -Resident printer codes: If you have an IBM graphics
  214.           compatible printer, you can send a variety of control codes
  215.           to it at any time.
  216.         -Emergency exit: a way of recovering from situations where
  217.           your system crashes due to some program getting into a loop
  218.           or dead end.
  219.  
  220.         In order to keep the memory used to a minimum, no on screen
  221.       help is provided.  You will need to refer to this documentation
  222.       when you need further information.  The basic commands follow a
  223.       mnemonic system and a command summary can be found in Chapter VIII
  224.       and in the file CACMDSUM.DOC which you can print out separately.
  225.       This documentation is for version 1.0 of CTRLALT.  You can find out
  226.       which version of CTRLALT you have by entering the command
  227.                 type ctrlalt.com
  228.       at the DOS prompt.  Normally typing a com file will produce junk on
  229.       the screen but we have arranged that only brief useful information
  230.       will appear when you issue this command.  And you needn't worry
  231.       that we are filling your memory with unneeded information when the
  232.       program loads; the part of the com file that gets typed is used for
  233.       the "small buffer" discussed in Chapter III.
  234.  
  235.  
  236.  
  237.  
  238.       Chapter I:INTRODUCTION                       Page 1
  239.  
  240.  
  241.  
  242.  
  243.               Documentation for CTRLALT
  244.  
  245.  
  246.       I.2 Files in the CTRLALT package and installing CTRLALT
  247.  
  248.         CTRLALT consists of the following files:
  249.         -CTRLALT.COM executable program file
  250.         -CTRLALT.ASM source code
  251.         -CTRLALT.DOC this file
  252.         -CACMDSUM.DOC a short summary to print out and have handy
  253.         -RELEASE.COM a program by R. M. Wilson discussed in Chap VII
  254.         -RELEASE.ASM source code
  255.         -RELEASE.DOC documentation for RELEASE
  256.  
  257.         The source code for CTRLALT is provided in part to allow you
  258.       to customize the program if you have access to the MICROSOFT or IBM
  259.       Macro Assembler.    Directions for customizing CTRLALT are provided
  260.       in Chapter IX.  For a small number of commands Chapter IX also
  261.       provides directions on using DEBUG to make the modifications.  We
  262.       hope to include an installation program in a future release of
  263.       CTRLALT.
  264.  
  265.         CTRLALT is a resident program which, once installed, will
  266.       remain in your computer's memory until you reboot (unless you use
  267.       RELEASE as described in its documentation).  You install it by
  268.       typing
  269.         ctrlalt
  270.       at the DOS prompt or placing that line in your AUTOEXEC.BAT file.
  271.       Once you have the program installed, try depressing the CTRL and
  272.       ALT keys and then one of the letters A, H or T while you are
  273.       holding down CTRL and ALT.  Hitting <Esc> will make the resulting
  274.       table disappear.    While examining the table that appears in
  275.       response to <Ctrl-Alt-T>, try hitting a letter key and then a
  276.       function key.  This will show you some of the features of CTRLALT.
  277.  
  278.         If you happen to load CTRLALT a second time, it will load and
  279.       you will lose the memory it takes so it is probably best to load it
  280.       in your AUTOEXEC.BAT file.  CTRLALT uses only two interrupts (one
  281.       of the keyboard interrupts and the clock interrupt) and it
  282.       is careful to pass any keystrokes not intended for it to any
  283.       programs loaded before it.  It cooperates with other resident
  284.       programs but certain other resident programs may not cooperate with
  285.       it.  For this reason, it is best to load it after any keyboard
  286.       macro program such as SUPERKEY or PROKEY.  When NEWKEY is
  287.       installed, occasionally the first keystroke issued after exiting a
  288.       CTRLALT module will not get passed to your program.  Since SMARTKEY
  289.       has trouble passing keystrokes to resident programs, CTRLALT does
  290.       not work well with SMARTKEY.  If you have loaded KEYWORKS, you
  291.       cannot safely invoke CTRLALT when a KEYWORKS menu is displayed but
  292.       otherwise the two programs seems to work together.  We know of no
  293.       other incompatibilities.
  294.  
  295.  
  296.  
  297.  
  298.       Chapter I:INTRODUCTION                       Page 2
  299.  
  300.  
  301.  
  302.  
  303.               Documentation for CTRLALT
  304.  
  305.  
  306.       I.3 Notation
  307.  
  308.         Commands are passed to CTRLALT by depressing the Control and
  309.       Alternate keys at the same time as a third key.    (By customizing,
  310.       you can replace this with any other pair of shifts.)  You must
  311.       first depress the shift keys and then, keeping the shift keys
  312.       depressed, press the third key.  We will indicate such a
  313.       combination as ^@<key> so that for example ^@C means to hold down
  314.       Control, Alt and then depress the <C> key.  Various key names will
  315.       appear in brackets such as:
  316.             <Esc> the Escape key marked "Esc".  This is the key to exit
  317.          most modules of CTRLALT.
  318.             <Enter> the "Enter" or "Return" key
  319.         <n0>,...,<n9> the number keys on the numeric keypad
  320.         0,1,2,3... refer to the number keys on the top row
  321.          (sometimes, we will refer to 0(zero) to distinguish it
  322.                  from "oh"; while the distinction is clear on your
  323.          screen, it is not always clear on your printer)
  324.         <Grey +>, <Grey -> the plus and minus at the extreme right of
  325.           the keyboard
  326.         +,- refer to the +/= and _/- keys on the top row
  327.         <Arrows> the generic name for the the four arrow keys
  328.         <PrtSc>, <Ins>, <Del>, <Home>, <End>, <PgUp>, <PgDn> the keys
  329.           with these words marked on them
  330.         <F1>, etc., the function keys
  331.       Occasionally for emphasis, we will denote the key with !/1 on it by
  332.       <1>, the key with Q as <Q>, etc.
  333.  
  334.         To help remember the large number of commands which CTRLALT
  335.       will take, the keys chosen have mnemonics associated with them and
  336.       we will often write out the mnemonic with the special key
  337.       capitalized.  Thus ^@aNsi is a mnemonic for the command ^@N.  In
  338.       particular, ^@Enter (the mnemonic for ^@E) should not be confused
  339.       with ^@<Enter>, the command issued by depressing Ctrl, Alt and
  340.       <Enter> at the same time.
  341.  
  342.         Once a module of CTRLALT has been invoked with ^@<key>, there
  343.       may be single letter "subcommands" which we have tried to make
  344.       consistent across modules.  In particular:
  345.         E      Enters something into a buffer or your program
  346.         P      sends something to your Printer
  347.         S      Switches a marking cursor from one monitor to the other
  348.         <Esc> exits the module
  349.       As for ^@ commands, we use mnemonics for subcommands so that, for
  350.       example, cUt is a mnemonic for the subcommands issued by <U>.
  351.  
  352.         CTRLALT sets aside two places to store keystrokes which you
  353.       can later enter.  One accessible from "Marking Mode" (Chap V) will
  354.       store up to a full screen of data and is called "the large buffer"
  355.       and one accessible when the ASCII or Hex tables are displayed will
  356.  
  357.  
  358.       Chapter I:INTRODUCTION                       Page 3
  359.  
  360.  
  361.  
  362.  
  363.               Documentation for CTRLALT
  364.  
  365.  
  366.       take up to 64 strokes and is called "the small buffer".  As
  367.       currently implemented these buffers can only contain ASCII codes
  368.       and not the extended ASCII codes associated with function or alt
  369.       keys.
  370.  
  371.  
  372.       I.4 Should you read the documentation?
  373.  
  374.         Yes!
  375.  
  376.         However, we are aware that the full documentation is long.
  377.       This is because of the many services that CTRLALT offers.  We
  378.       suggest that you learn about one or two modules at a time and have
  379.       tried to write the documentation in a way that you can read
  380.       individual chapters.  For many of the modules, it will be more
  381.       convenient to experiment in your word processor than in DOS.  And
  382.       we apologize for warning you about the difference between ^@Enter
  383.       and ^@<Enter> more times than you will need, but we want to be sure
  384.       that you see it even if you skim the documentation.
  385.  
  386.  
  387.       I.5 A Bow and Two Disclaimers
  388.  
  389.         This program was developed by Barry Simon and Richard Wilson.
  390.       It is POSTWARE: if you like it, send us a postcard addressed to us
  391.       at
  392.         253-37 Caltech
  393.         Pasadena, CA 91125
  394.       Of course, we're glad to hear comments, suggestions about
  395.       enhancements, and even about complaints, incompatibilities and bugs.
  396.       Simon has a Compuserve number [76505,2315] but he doesn't promise
  397.       to check his Compuserve mailbox very often!  And if you like the
  398.       program please give it to your friends, place it on bulletin boards
  399.       and otherwise spread it around.  While it is copyright by the two
  400.       of us, we explicitly allow any use of it but request that at a
  401.       minimum, the CTRLALT.COM and CTRLALT.DOC files be distributed
  402.       together.
  403.  
  404.         While we have a connection with Caltech, we emphasize that
  405.       this program has no such connection.
  406.  
  407.         And we make the usual disclaimer: this software is
  408.       distributed "as is" and is warranted for no purpose.  Any risk
  409.       associated with its use including, but not limited to, loss of data
  410.       is borne by the user.
  411.  
  412.         The following are trademarks or copyrighted names of the
  413.       companies indicated in parentheses: FANSI-CONSOLE (Hersey
  414.       Microcomputing), Proprinter & IBM (International Business
  415.       Machines), KEYWORKS (Alpha Software), MONOGRAFXS (Analytics
  416.  
  417.  
  418.       Chapter I:INTRODUCTION                       Page 4
  419.  
  420.  
  421.  
  422.  
  423.               Documentation for CTRLALT
  424.  
  425.  
  426.       international), NEWKEY (FAB software), PCED (Cove software),
  427.       PCWRITE (Quicksoft), PROKEY (Rosesoft), SIDEKICK, SUPERKEY & TURBO
  428.       PASCAL (Borland International), SMARTKEY (Software Research
  429.       Technologies), WORDSTAR (Micropro).
  430.  
  431.         The original version was finalized during April, 1986.
  432.  
  433.  
  434.       I.6 Usage Notes
  435.  
  436.             Many chapters will end with some "Usage Notes" which we hope
  437.       will help you use CTRLALT and will deal with some special
  438.       situations.  We are painfully aware of the fact that there are only
  439.       six combinations of pairs of the four shift keys and that software
  440.       developers are fond of using them as "hotkeys" for resident
  441.       programs.  Because CTRLALT has so many hotkeys, we felt that we had
  442.       to use three key combinations and it was natural to use two shifts
  443.       as the common callup.  Besides, once we named the program
  444.       CTRLALT, we had no choice!
  445.  
  446.         The customization procedure described in Section X.2,
  447.       explains how to change which pair of shifts combine with letter
  448.       keys to call up CTRLALT.    Because a third key is involved you will
  449.       probably want the two shifts to be on the left side and the second
  450.       choice is clearly <Ctrl-LftShft>.  It is even possible to replace
  451.       the <Ctrl-Alt> combinations by just <Alt> or just <Ctrl> although
  452.       this will likely cause problems with some of your application
  453.       programs that use Alt or Ctrl keys.
  454.  
  455.         If you are a SIDEKICK user, you probably use ^@ to invoke
  456.       SIDEKICK.  More recent versions of SIDEKICK allow you to change
  457.       this choice and we believe that is better than changing CTRLALT
  458.       but clearly you should follow your preference.  We note that while
  459.       SIDEKICK allows you to choose two different combinations to invoke
  460.       it, you can choose to have only one: while running SKINST you need
  461.       only hit the same shift twice when asked for "Secondary command"
  462.       after making the "Activate commands" choice from the SKINST main
  463.       menu.
  464.  
  465.         One final warning about the choice of ^@.  We are careful not
  466.       to use ^@ with any of the numeric keypad or with <Grey +>/<Grey ->
  467.       to avoid any chance of accidentally pressing ^@<Del>.  If you
  468.       customize, we suggest that you keep this convention although using
  469.       ^@ with <n7>, <n8> or <n9> (or <PrtSc> on an AT style keyboard)
  470.       should be safe.
  471.  
  472.  
  473.       I.7 A Warning
  474.  
  475.         Many of the modules in CTRLALT are quite powerful and should
  476.  
  477.  
  478.       Chapter I:INTRODUCTION                       Page 5
  479.  
  480.  
  481.  
  482.  
  483.               Documentation for CTRLALT
  484.  
  485.  
  486.       be used with care.  We have in mind especially the emergency exit
  487.       feature invoked by ^@<F9>.  PLEASE READ CHAPTER VII BEFORE
  488.       EXPERIMENTING WITH IT.  We urge you to try it initially in a
  489.       situation where you would lose nothing but a little time if your
  490.       system underwent a hard crash (i.e. required you to turn the power
  491.       switch off and on).  We don't wish to frighten you from using this
  492.       module since it can be useful but we urge some care.
  493.  
  494.         You may need to experiment with the different modes of entry
  495.       of material previously cut in the marking module discussed in
  496.       chapter V.  Some programs don't accept keystrokes in quite the way
  497.       that you might expect.  The same caution applies to the entry of
  498.       graphics characters as described in Chapter VI.  Not all programs
  499.       will accept ASCII characters with codes between 129 and 256 or will
  500.       act in the way you would like.  Problems associated with these
  501.       issues are not likely to cause any serious foulups and can usually
  502.       by corrected by a little deletion and retyping.
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.       Chapter I:INTRODUCTION                       Page 6
  539.  
  540.  
  541.  
  542.  
  543.  
  544.             Chapter II: TWO MONITOR SUPPORT
  545.  
  546.  
  547.       COMMANDS: ^@Copy, ^@Kill, ^@Switch, ^@Other
  548.  
  549.  
  550.       II.1 Main Commands
  551.  
  552.         ^@C for Copy will copy the current monitor to your second monitor
  553.       if you have a two monitor system.  ^@K for Kill will blank your
  554.       inactive monitor.  It is NOT necessary to blank your inactive
  555.       monitor before copying to it a second time; ^@K is provided so you
  556.       needn't look at the material on your second monitor when you no
  557.       longer need it.  ^@S for Switch will copy the present screen to the
  558.       inactive screen and transfer control to the inactive screen.  ^@O
  559.       for Other will place ASCII tables in Hex and decimal on your
  560.       inactive monitor; they will not erase the whole inactive monitor
  561.       but will cover up a large portion of it.    ^@K will erase them and
  562.       the rest of the inactive screen.
  563.  
  564.  
  565.       II.2 Usage Notes
  566.  
  567.         You will use ^@C the most.    You will discover that your
  568.       inactive monitor makes a great scratch pad and that you no longer
  569.       need to make little notes which get lost on your desk.  Indeed, we
  570.       believe that if you use your computer a lot and have a single
  571.       monitor system, it may be worth investing in a second one (a
  572.       monochrome card and monitor can be purchased for as little as $250)
  573.       just to use ^@C!
  574.  
  575.         Unfortunately, ^@K does not kill the cursor on the inactive
  576.       monitor.    However, it will not produce a cursor if none is there
  577.       and ^@S takes the cursor with it.  Thus, the sequence of commands
  578.         ^@S,^@S,^@K
  579.       will erase the inactive screen and remove the cursor on it.  It
  580.       will not change any colors on the original monitor.
  581.  
  582.         For the technically minded, we note that a screen ^@Copied to
  583.       a monochrome monitor has all attributes set to 07 (white, green or
  584.       amber on black) and a screen ^@Copied to the color monitor has
  585.       attributes set to 1EH (yellow on blue).  ^@S copies the exact
  586.       attributes so that a double ^@S to remove your cursor doesn't lose
  587.       any attributes.
  588.  
  589.         ^@S will not be used very often.  If used in a running
  590.       program, the results may be unpredictable if the program writes
  591.       directly to the screen; for example loading PCWRITE on a color
  592.       screen and using ^@S will thoroughly confuse PCWRITE.  At the DOS
  593.       command line, it is preferable to use a command like "Mode mono" to
  594.       switch screens since that will reinitialize the cursor.  There is a
  595.       strange interaction involving the cursor between CTRLALT and the
  596.  
  597.  
  598.       Chapter II:TWO MONITOR SUPPORT                   Page 7
  599.  
  600.  
  601.  
  602.  
  603.               Documentation for CTRLALT
  604.  
  605.  
  606.       DOS command editor PCED (and its public domain precursor CED) which
  607.       can cause ^@S to give you a cursor in a funny place; you can even
  608.       lose your cursor completely.  However, this interaction does not
  609.       take place if you are only using ^@S twice to remove a cursor on
  610.       the inactive screen and you do not issue any commands between the
  611.       two ^@S commands.
  612.  
  613.         If you have a dual monitor system, ^@C will not work before
  614.       both monitors are initialized.  That is, if your boot up procedure
  615.       only uses one monitor, say the color monitor, ^@C will not work
  616.       until you have made the system recognize the other monitor by
  617.       issuing a "mode mono" command (followed by mode co80) or otherwise
  618.       "used" your second monitor.  However, ^@S will work and a pair of
  619.       ^@S's can be used to initialize the inactive monitor.
  620.  
  621.         CTRLALT works in 80 column text mode.  Thus, if you try to
  622.       copy a monochrome screen to a color screen which was initialized in
  623.       a 40 column text mode or last in graphics mode, the copy will not
  624.       be successful.  However, ^@S, ^@S, ^@C from the monochrome screen
  625.       will place the color screen in the proper mode and copy the
  626.       monochrome screen to it.
  627.  
  628.         The dual monitor commands if issued by accident on a single
  629.       monitor system will certainly not cause catastrophe.  ^@C, ^@K and
  630.       ^@O have absolutely no effect.  ^@S will cause a problem but a
  631.       second ^@S followed by a "clear screen" should recover.  But, if
  632.       you have a single monitor system and the Macro Assembler, you
  633.       should follow the directions in Section IX.3 for disabling the dual
  634.       monitor services or you can follow the directions in Section IX.9
  635.       for using DEBUG.
  636.  
  637.         If your graphics monitor is in a graphics mode, issuing a
  638.       ^@Copy will not have any adverse effect but it will produce junk on
  639.       your inactive screen.  A ^@Switch will be more dramatic but issuing
  640.       an immediate "clear screen" will often allow you to recover.
  641.  
  642.         Graphics monitors can use their extra memory in text mode to
  643.       show more than one page (4 pages on the CGA and up to 8 pages on
  644.       the EGA) and there is software (e.g. FANSI CONSOLE) that allows you
  645.       to shift pages.  CTRLALT assumes that "page 1" is the page being
  646.       displayed on your color monitor and, for example, ^@C will copy that
  647.       page to the monochrome screen even if another page is currently
  648.       displayed.  Similarly, the highlighting in print control and
  649.       marking modes (see Chapters IV and V) will not show on the color
  650.       screen if any page other than page one is displayed.  The issues
  651.       discussed in this paragraph will be irrelevant to most users who
  652.       will not be on any page other than page 1.  If you do wind up on
  653.       another page in memory a command that reinitializes the screen such
  654.       as "mode co80" will make page 1 the page displayed on the color
  655.       monitor.
  656.  
  657.  
  658.       Chapter II:TWO MONITOR SUPPORT                   Page 8
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.                   Chapter III: TABLES
  666.  
  667.  
  668.       COMMANDS: ^@Ascii, ^@Hex, ^@Other, ^@aTtributes, ^@aNsi,
  669.             ^@Enter,^@Quit
  670.       ^@A,^@H SUBCOMMANDS: <Arrows>, <Home>, <End>, <Esc>, Enter,
  671.                       Print, Buffer
  672.       ^@T SUBCOMMANDS: <anykey>, <Esc>
  673.       WARNING: Do not confuse ^@Enter (that is ^@E) with ^@<Enter> or the
  674.          subcommand Enter (the is E) with <Enter>
  675.  
  676.       III.1 The Character Tables
  677.  
  678.         CTRLALT allows you to pop up two different tables of ASCII
  679.       characters at any time.  They are more compact and therefore
  680.       perhaps more useful than the ASCII tables provided by programs like
  681.       SIDEKICK.  ^@A popsup a table which is 34 characters across and 14
  682.       down showing a decimal ASCII table.  The characters are shown in
  683.       groups of ten with the groups labelled 000, 010, ... ,250.  The
  684.       characters appearing as 256-259 are really repeats of 0-3.  Please
  685.       remember that the groups start with xx0, that is, for example, the
  686.       third character in group 080 (the letter R) has ASCII code 082 not
  687.       083.
  688.  
  689.         ^@H shows a similar table 18 long by 22 wide with Hex ASCII
  690.       values.  The rows are labelled with a hex digit followed by 0 and
  691.       the columns with the second hex digit.  ^@O shows both tables at
  692.       once on your inactive monitor.
  693.  
  694.         Pressing <Esc> when the tables produced by ^@Ascii or ^@Hex
  695.       are active clears the tables and restores the screen.  You cannot
  696.       restore the inactive screen following ^@Other although you can clear it
  697.       with ^@Kill.  You cannot show both tables on your active screen;
  698.       that is, ^@A has no effect after a ^@H and vice versa.
  699.  
  700.  
  701.       III.2 Entering Keystrokes from ASCII Tables
  702.  
  703.         The tables produced by ^@A or ^@H have a highlighted cursor,
  704.       the first time at character 00 but at later times wherever you left
  705.       the cursor the last time that table was used.  The four arrow keys
  706.       move the cursor in the obvious ways and <Home>/<End> moves the
  707.       cursor to positions 000 and 259 (00 and FF on the Hex table).
  708.  
  709.         Once you have moved the cursor to the desired character, you
  710.       have a number of options:
  711.         E    will Enter the highlighted character at the position your
  712.           cursor was when CTRLALT was invoked and the table will
  713.           disappear
  714.         P    will send the character to your Printer.  The table
  715.           remains on the screen so you can send several
  716.  
  717.  
  718.       Chapter III:TABLES                       Page 9
  719.  
  720.  
  721.  
  722.  
  723.               Documentation for CTRLALT
  724.  
  725.  
  726.           characters to your printer.  The small buffer is not
  727.           affected.
  728.         B  will send the character to the small Buffer.  The table
  729.           remains on the screen so that several characters can be
  730.           sent to the buffer.
  731.         <Esc> will make the table disappear but the small buffer is
  732.           not cleared.
  733.  
  734.         CTRLALT keeps a small buffer of up to 64 characters.  When
  735.       the choice E is made, the highlighted character is added to the end
  736.       of the buffer and the entire buffer is inserted at the original
  737.       cursor position.    Thus, if several B subcommands have been issued
  738.       followed by an E several characters will be entered.  And if only a
  739.       single E with no B subcommands has been entered, then the buffer
  740.       will have one character in it.  If you wish to put several
  741.       characters in the small buffer without entering any of them yet,
  742.       then use several B subcommands followed by an <Esc>.  If no E or B
  743.       subcommands have been invoked, the small buffer will not be changed
  744.       and will remain what it was when you invoked the table.  An E or B
  745.       command will clear the buffer of what it had in it before ^@A or
  746.       ^@H was invoked but does not affect any additions to the buffer
  747.       made during the current invocation.
  748.  
  749.         At any time you can strike ^@E to Enter the contents of the
  750.       small buffer at the current cursor position.  ^@Entering does not
  751.       empty the buffer so that you can repeatedly reissue the buffer.
  752.       For example if you need to enter a string of ^I's to your program,
  753.       you need only call up ^@Ascii highlight position 009, press E (or B
  754.       and <Esc>) and then ^@Enter as often as necessary.  If you strike
  755.       ^@E a second time while CTRLALT is still sending characters from
  756.       the buffer due to a first ^@E, the first insertion is aborted and a
  757.       second insertion begins at the head of the buffer, probably not
  758.       what you want.  You can halt the playback of the contents of the
  759.       small buffer with ^@Q.  After using ^@Q to Quit, you are back in
  760.       your application program.  A ^@E will reinsert the small buffer
  761.       from its beginning while another ^@Q will continue the playback of
  762.       the buffer at the point you quit with the first ^@Q.
  763.  
  764.             PLEASE DON'T CONFUSE ^@Enter AND ^@<Enter>!!!
  765.  
  766.         See the Usage Notes to this chapter for a discussion of
  767.       exactly how characters are sent to your program, for a warning
  768.       about sending characters to your printer and for a discussion of
  769.       alternates to using the small buffer.
  770.  
  771.  
  772.       III.3 The aTtribute and aNsi Tables
  773.  
  774.         ^@T will pop up a table of colors which is 22 wide by 11
  775.       down.  This table has rows labelled with a hex digit and 0 and
  776.  
  777.  
  778.      Chapter III:TABLES                       Page 10
  779.  
  780.  
  781.  
  782.  
  783.               Documentation for CTRLALT
  784.  
  785.  
  786.       columns labelled with a single digit.  The color combination in row
  787.       60 and column F has what is called color attribute (hence T for
  788.       aTtributes) 6FH (The H stands for Hex; in this case 6F is white on
  789.       brown).  Some programs require you to pick colors by giving these
  790.       attributes which is why this table can be useful.  For example, you
  791.       can change the colors that CTRLALT uses for its tables by modifying
  792.       the source code; you will need to insert attributes in appropriate
  793.       places as will be described in Section IX.4.  The table only shows
  794.       attributes 00H through 7FH but attributes run up to FFH.    Row 8x is
  795.       the same as row 0x, row 9x is the same as row 1x,... row Fx is the
  796.       same as row 7x except that the character is blinking.  We decided
  797.       to spare you the blinking!  If you have a monitor which is two
  798.       color ("monochrome") but with many shades such as the COMPAQ
  799.       monitor, the attribute table can be very useful in showing you what
  800.       attribute choices correspond to what shadings.
  801.  
  802.         Unfortunately, the color codes used by the ANSI.SYS device
  803.       driver are different from the color attributes.  ^@N for aNsi will
  804.       pop up a table showing the ANSI conventions.  The rows are marked
  805.       4x because ANSI uses that for background colors.    The columns are
  806.       marked 0;3x or 1;3x because that is the ANSI convention for
  807.       foreground colors.  In the Usage Notes to this chapter, we explain
  808.       how to use the table to set colors in DOS via the PROMPT command.
  809.  
  810.         The colors in the ANSI table are not set using the ANSI.SYS
  811.       device driver but by writing the color combinations directly into
  812.       memory.  Thus colors will show even if you do not not have an ANSI
  813.       device driver loaded.  A non-standard replacement for ANSI.SYS
  814.       which attempts to correct the ANSI codes on a monochrome screen
  815.       (for example, FANSI-CONSOLE) may show attributes set by ANSI
  816.       commands differently from indicated in the aNsi table.  However, on
  817.       a color monitor, the attributes shown by the aNsi table should
  818.       correctly correspond to those set by any ANSI.SYS compatible device
  819.       driver.
  820.  
  821.  
  822.       III.4  ASCII codes and Scan codes
  823.  
  824.         Each letter has an ASCII code and each key of the keyboard
  825.       has a so-called scan code.  Certain programs require you to give
  826.       scan codes, some in decimal form and some in hexadecimal form.
  827.       When the aTtribute table is active, pushing any key or simple key
  828.       combination will cause the scan codes of the key in hex and decimal
  829.       to be displayed at the top of the table and the ASCII code in hex
  830.       and decimal to be displayed at the bottom of the table.  By
  831.       convention, a key and its shifted version have the same scan codes
  832.       but some of the alt and ctrl shifted keys have special "scan codes"
  833.       different from the ordinary keys.  For such keys, the ASCII code
  834.       will be listed as 00 and the "scan code" as the appropriate code.
  835.       The scan code in this case is often called "extended ASCII code" or
  836.  
  837.  
  838.      Chapter III:TABLES                       Page 11
  839.  
  840.  
  841.  
  842.  
  843.               Documentation for CTRLALT
  844.  
  845.  
  846.       "second ASCII code".  In the Usage Notes, we will explain how these
  847.       codes are used in ANSI keyboard redefinition.  For example, in
  848.       decimal form <F1> has second ASCII codes 59, 84, 94 and 104 in its
  849.       unshifted, shifted, ctrl-shifted and alt-shifted states.    Try
  850.       hitting ^@T followed by <F1>, <Shft F1>, <Ctrl F1>, <Alt F1> to see
  851.       this in action.  You won't need to reach for your BASIC manual any
  852.       more to look up these numbers with CTRLALT there to help you!
  853.  
  854.             Since <Esc> exits from the aTtribute table, you can't use
  855.       CTRLALT to get the codes for <Esc>.  You'll just have to remember
  856.       them.  The scan code is real hard: it's 01 decimal and 01H.  The
  857.       ASCII codes are 27 decimal and 1B in Hex.
  858.  
  859.         Two warnings about using CTRLALT to generate scan codes which
  860.       we'll expand upon in the Usage Notes: if you have a keyboard macro
  861.       program installed and you redefined <Alt 1> to mean "hello",
  862.       pressing <Alt 1> will not display the codes (78H scan and 00 ASCII)
  863.       for alt-1 but will display the codes (18H scan and 6FH ASCII) for
  864.       "o", the last letter in hello.  That is, your keyboard macro
  865.       program will get to translate the keystrokes before passing them to
  866.       CTRLALT.    Similarly, if you want the scan code for <Alt-End> (94H),
  867.       you must be sure you are in the ^@0(zero)  mode discussed in Chap
  868.       VI.  By default, CTRLALT translates <Alt n1> to the box line
  869.       character, └, ASCII code C0H and that is what will appear in
  870.       aTtribute mode if you strike <Alt End> (which is the same as <Alt
  871.       n1>) without shifting to ^@0 mode.  Thus the box drawing module of
  872.       CTRLALT translates the keystrokes before passing them to the
  873.       aTtribute module.
  874.  
  875.       III.5 Usage Notes
  876.  
  877.         When the Ascii or Hex tables are displayed, the cursor can be
  878.       moved off the tables and the characters on the screen Entered,
  879.       Printed or put in the Buffer.  However, if you wish to get
  880.       characters off the screen, it is probably preferable to use marking
  881.       mode described in Chapter V.  When in these tables, hitting any key
  882.       but the arrow keys, <Home>, <End>, <Esc>, <E>, <P> or <B> has no
  883.       effect.
  884.  
  885.         If the small buffer fills and you press <B>, the table will
  886.       disappear and you will be placed back at the cursor position.  If
  887.       you don't get your finger off the key soon enough, some extra <B>'s
  888.       may be issued to your program.  The buffer can be entered with ^@E.
  889.  
  890.         Characters sent to many printers are often not printed until
  891.       line feed (ASCII code 0AH) is sent.  Thus, your use of the Printer
  892.       option when the tables are active may seem to have no effect; if
  893.       you want to see the effect, you can send the necessary 0AH or 10
  894.       decimal ASCII code.  You can send control codes to the printer from
  895.       the ASCII table but it is easier to use the printer control mode
  896.  
  897.  
  898.      Chapter III:TABLES                       Page 12
  899.  
  900.  
  901.  
  902.  
  903.               Documentation for CTRLALT
  904.  
  905.  
  906.       described in the next chapter.
  907.  
  908.         When you strike a key like <a> on your keyboard, the ASCII
  909.       code (61H in this case) and scan code (1EH in this case) are stored
  910.       in DOS's keyboard buffer until input is requested by a calling
  911.       program.  You can also enter an "a" using the numeric keypad and
  912.       the decimal ASCII code (97 in this case): just hold down the <Alt>
  913.       key, press <n9>, then <n7> and then let go of the <Alt> key.  The
  914.       ASCII code is still entered in the buffer as 61H but the scan code
  915.       is 00.  To see this, call up ^@T, and depress <n9>, <n7> while
  916.       holding down both the <Alt> and <LftShft> keys.  The point of this
  917.       is that CTRLALT enters characters from the small buffer and tables
  918.       (or from the large buffer for that matter) as if they were being
  919.       entered from the numeric keypad, that is with a scan code of 00.
  920.       This may affect how your keyboard macro program processes something
  921.       like a "+" if you have defined a macro for <+> but not for <Grey
  922.       +>; generally, it will act like the more usual key but that depends
  923.       on the keyboard macro program.  This issue, especially as regards
  924.       KEYWORKS, is discussed further in Section V.4.
  925.  
  926.         It is also important to realize that the keystrokes entered
  927.       by CTRLALT from the tables or buffers will be processed by your
  928.       application programs or keyboard macro/application program
  929.       combination.  Thus placing the cursor on 18H in the Hex table (Ctrl
  930.       X) and pressing E will move the cursor down in WORDSTAR just as
  931.       hitting <Ctrl-X> would do and it will not enter a Ctrl-X in your
  932.       file.
  933.  
  934.         If you want to enter a long string of graphics characters
  935.       such as ════════════, you could place the corresponding ASCII
  936.       character in the small buffer (C4H in this case) and use ^@E many
  937.       times but you should be aware that CTRLALT's box drawing mode
  938.       described in Chapter VI is probably easier to use.
  939.  
  940.         ANSI color codes are useful for setting screen colors in DOS.
  941.       The syntax is <esc>[3x;4y(;1)m where x and y can be read off the
  942.       ^@N table and the ;1 is optional.  Thus the command
  943.         prompt $e[33;44;1m$p$g
  944.       at the DOS command line would set colors to yellow on blue and
  945.       display your current drive and directory ($p for path) and a ">"
  946.       ($g) as your visible prompt assuming you had included a line
  947.         device=ansi.sys
  948.       in your CONFIG.SYS file.    Or the command
  949.         prompt $e[33;44;0m$p$g$e[32;44;1m
  950.       will display the path and ">" in brown on blue and what you type in
  951.       green on blue.  The "1" and "0" codes are toggles so that if both
  952.       colors were intense, it would not be necessary to place the "1" in
  953.       each escape sequence.
  954.  
  955.         The reason that ANSI codes and color attributes are not the
  956.  
  957.  
  958.      Chapter III:TABLES                       Page 13
  959.  
  960.  
  961.  
  962.  
  963.               Documentation for CTRLALT
  964.  
  965.  
  966.       same is that if the hex digit is written in binary as 0xyz, then x
  967.       is Red, y is Green and z is Blue in color attributes and in ANSI
  968.       the roles are in the reverse order.  Thus cyan, which corresponds to
  969.       green and blue on, is 011 (=3H) in attributes and 110 (=6H) in ANSI.
  970.  
  971.         For the technical among you, CTRLALT intercepts interrupt 09H
  972.       when looking for its commands but waits for interrupt 16H to act
  973.       before reading its subcommands and/or scan codes.  This is why
  974.       keyboard macro programs will process input before CTRLALT reads the
  975.       scan codes.  CTRLALT does see the original keystroke through int 09
  976.       but passes it up the chain where the macro program processes it
  977.       before the ^@T module reads the scan codes via int 16.
  978.  
  979.         Extended scan codes are useful for ANSI keyboard
  980.       redefinition.  For example, to redefine <F1> to be "dir" followed
  981.       by <Enter> you need to send
  982.             <esc>[0;59;"dir";13p
  983.       to the screen.  The <esc>[ and "p" are the ANSI codes indicating
  984.       key redefinition while 13 is the decimal ASCII code for <Enter> and
  985.       59 the extended ASCII code for <F1>.  That is, if you call up ^@T,
  986.       and press <Enter>, you'll see a decimal ASCII code of 013 while
  987.       pressing <F1> will return an ASCII code of 00 and a decimal "scan"
  988.       code of 59.
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.      Chapter III:TABLES                       Page 14
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.              Chapter IV: PRINT CONTROL MODE
  1026.  
  1027.  
  1028.       COMMANDS: ^@P
  1029.       SUBCOMMANDS: <Up Arrow>, <Down Arrow>, <PgUp>, <PgDn>, <Home>, <End>
  1030.                Switch, Print=<Enter>, All, <Esc>
  1031.            Bold, Emphasized, Doublestrike, Compressed, double Wide
  1032.                Tiny, near letter Quality, pIca, 8 lines/in, Underline
  1033.                Form feed, New page top
  1034.                character set 2, 1 direction, sKip perforations,
  1035.                Reset, Off
  1036.  
  1037.       IV.1 Line Marking
  1038.  
  1039.         ^@P calls up a line marking mode which can be used to send
  1040.       lines to the Printer and where it is possible to send control codes
  1041.       to an IBM Graphics compatible printer.  A whole line mark appears
  1042.       at the position of your current cursor.  This line can be expanded
  1043.       to a multi-line band.  <PgUp> and <PgDn> move the band up and down
  1044.       without changing its width.  The <Down Arrow> key makes the band
  1045.       wider by moving the bottom edge down one line without moving the
  1046.       top edge.  This key has no effect if the bottom edge is on the
  1047.       bottom of the screen.  The <Up Arrow>key makes the band narrower
  1048.       by moving the bottom edge up by one line without changing the top
  1049.       edge.  If the band is one line wide, <Up Arrow> has no effect.
  1050.       <Home> moves the band to the top of the screen and <End> to the
  1051.       bottom without changing the width.  If you have a dual monitor
  1052.       system, S for Switch will switch the band to your inactive monitor
  1053.       and a second S will switch it back.  The band can be adjusted while
  1054.       it is on either monitor.    At any time <Esc> exits this mode with no
  1055.       further action.
  1056.  
  1057.  
  1058.       IV.2 Printing the Marked Lines
  1059.  
  1060.         After you have marked some lines, you have two options for
  1061.       printing on the system printer LPT1:
  1062.         P    Prints the marked lines on the printer
  1063.         A    Prints all lines on the screen with the marking
  1064.       Thus, A acts like <Shft PrtSc> if you haven't Switched the marking
  1065.       to the other screen while ^@P,S,A will print what's on your
  1066.       inactive screen.    At any time <Esc> exits this mode with no
  1067.       further action.  <Enter> means the same thing as P, i.e. it prints
  1068.       the marked lines on your printer.
  1069.  
  1070.       IV.3 Sending Control Codes to Your Printer
  1071.  
  1072.         Did you ever wish that you could send commands to your
  1073.       printer while inside a running program?  CTRLALT lets you do that
  1074.       while in its ^@P mode.  Hitting the letters or numbers in the first
  1075.       column sends the commands indicated; for the technically inclined
  1076.  
  1077.  
  1078.      Chapter IV:PRINT CONTROL MODE                  Page 15
  1079.  
  1080.  
  1081.  
  1082.  
  1083.               Documentation for CTRLALT
  1084.  
  1085.  
  1086.       the last column gives the actually decimal ASCII codes sent to the
  1087.       printer.    THESE CODES ONLY DO THE OPERATIONS LISTED FOR PRINTERS
  1088.       COMPATIBLE WITH THE IBM GRAPHICS/EPSON MX 80 including the IBM
  1089.       Proprinter and Epson FX 80.  Three are special to the PROPRINTER.
  1090.       ┌────┬───────────────────────────────────┬───────────────┐
  1091.       │    │   PRINTER FUNCTION           │ ASCII CODES   │
  1092.       ╞════╪═══════════════════════════════════╪═══════════════╡
  1093.       │ B  │  Bold=Emphasized+Doublestrike       │  27,69,27,71  │
  1094.       │ E  │  Emphasized print           │    27,69       │
  1095.       │ D  │  Doublestrike               │    27,71       │
  1096.       │ C  │  Compressed print           │    15       │
  1097.       │ W  │  double Wide               │    27,87,1    │
  1098.       │ T  │  Tiny = Superscript, 1.5 mm       │ 27,83,1,27,65,│
  1099.       │    │      line spacing, compressed │  5,27,50,15   │
  1100.       │ Q  │  near letter Quality (PROPRINTER) │    27,73,2    │
  1101.       │ I  │  pIca=12 cpi (PROPRINTER ONLY)    │    27,58       │
  1102.       │ 8  │  8 lines per inch spacing       │    27,48       │
  1103.       │ U  │  Underline on               │    27,45,1    │
  1104.       │ F  │  Form feed               │    12       │
  1105.       │ N  │  New page top(PROPRINTER ONLY)    │    27,52       │
  1106.       │ 2  │  character set 2           │    27,54       │
  1107.       │ 1  │  1 directional printing       │    27,85,1    │
  1108.       │ K  │  sKip perforations           │    27,78,8    │
  1109.       │ R  │  Reset                │  INT 17H       │
  1110.       │ O  │  Off                   │ 27,70,27,72,18│
  1111.       │    │                   │  27,87,0,27,84│
  1112.       │    │                   │  27,79,27,55, │
  1113.       │    │                   │  27,45,0,27,65│
  1114.       │    │                   │  12,27,50,27, │
  1115.       │    │                   │  73,0,13       │
  1116.       └────┴───────────────────────────────────┴───────────────┘
  1117.       The box characters in the above table were entered with the CTRLALT
  1118.       box drawing mode (Chapter VI).
  1119.  
  1120.         Rather than have separate commands to turn printer features
  1121.       on and off, you can only turn them on with single commands.  The
  1122.       Off command turns off all special printing features; it should have
  1123.       the same effect as turning your printer off and on except that it
  1124.       will not reset the meaning of top of page.  The RESET command,
  1125.       which should work with any printer uses a BIOS routine and, when it
  1126.       works, has the same effect as turning the printer off and on
  1127.       including resetting the top of page.  It appears not to work when
  1128.       one of several different print spooling programs is installed.
  1129.  
  1130.  
  1131.       IV.4 Usage Notes
  1132.  
  1133.         Until you get used to print control mode, you will probably
  1134.       call up ^@P and then hit the <Up Arrow> and be surprised that
  1135.       nothing happens.    Note that the <Up Arrow> moves up only the bottom
  1136.  
  1137.  
  1138.      Chapter IV:PRINT CONTROL MODE                  Page 16
  1139.  
  1140.  
  1141.  
  1142.  
  1143.               Documentation for CTRLALT
  1144.  
  1145.  
  1146.       edge of the marked region and has no effect when the region is one
  1147.       line wide.  Use <PgUp> to move the marked region up.
  1148.  
  1149.         In print control mode, all letter subcommands except P, A, S
  1150.       send codes to the printer.
  1151.  
  1152.         Characters sent to the printer using this module are
  1153.       filtered to avoid control characters being sent inadvertently.
  1154.       That is characters 00H through 1FH and 80H through 9FH (0-31 and
  1155.       128-159 decimal) are replaced with spaces before the characters are
  1156.       sent to the printer.  Such filtering is not done in printing from
  1157.       the ASCII and hex tables nor in marking mode (discussed in the next
  1158.       chapter).  To see the difference, call up the ASCII table with ^@A,
  1159.       then call up ^@P and highlight the first row followed with <P>.
  1160.       Only spaces will be printed.  Now call up ^@<Enter>, move the
  1161.       cursor to ASCII code 007 (Ctrl G) and hit P.  This single character
  1162.       will be sent unfiltered to your printer and you will hear a beep.
  1163.  
  1164.         Except for the issue of filtering, you may find it more
  1165.       convenient to use marking mode to send characters to the printer.
  1166.  
  1167.             In the default "character set 1", the printer interprets codes
  1168.       in the 80H through 9FH range as the corresponding code 80H smaller
  1169.       so that, for example, 9B is the same as 1B (<Esc>).  Character set
  1170.       2 which can be turned on with the <2> subcommand prints out various
  1171.       foreign alphabet characters for these codes corresponding to what
  1172.       you will see on your screen if you popup an ASCII table.    Since
  1173.       CTRLALT cannot know which character set your printer is using,
  1174.       filtering in printer control mode is always on.  Thus the <2>
  1175.       command is only useful for printing out files with DOS's copy
  1176.       command, in some application programs, or printing from a CTRLALT
  1177.       table.
  1178.  
  1179.         Turning on Emphasized or Doublestrike print slows down your
  1180.       printer by a factor of about 2 and turning on both by a factor of
  1181.       4. Nevertheless, output in this "Bold" mode looks so good that we
  1182.       have included a separate command (B) to turn it on.  Thus B is
  1183.       equivalent to striking <D> and <E>.  If you have a Proprinter you
  1184.       might look at the NLQ (invoked with Q) or <Q> and <D> together.
  1185.  
  1186.         Tiny print is a combination of superscript mode, compressed
  1187.       print and a reduced number of lines per inch; it has an interesting
  1188.       affect somewhat akin to the EGA's 43 line screen mode.  The eight
  1189.       lines per inch mode invoked with <8> does not change the size of
  1190.       characters but removes white space between lines.  It is useful for
  1191.       saving paper in printing out things like program listings with the
  1192.       "copy ... prn" command.  Unidirectional printing, invoked with <1>,
  1193.       slows the printer down but is useful if you want columns to come
  1194.       out especially straight.    You may want to use it when printing out
  1195.       the graph drawing characters.
  1196.  
  1197.  
  1198.      Chapter IV:PRINT CONTROL MODE                  Page 17
  1199.  
  1200.  
  1201.  
  1202.  
  1203.               Documentation for CTRLALT
  1204.  
  1205.  
  1206.  
  1207.         The underlining turned on by <U> is continuous; even blank
  1208.       lines are underlined.
  1209.  
  1210.         The sKip perforation command sets the printer to print out 58
  1211.       lines and then skip 8.  If you want to use it, you should set the
  1212.       top of page to about four lines below the perforation and then use
  1213.       the <R> or <N>(on a Proprinter) command or turn your printer off
  1214.       and on.
  1215.  
  1216.         The IBM Graphics printer does not allow you to turn on all
  1217.       possible combinations of special print features.    Only one of
  1218.       Compressed and Emphasized can be turned on and only one of the
  1219.       following three: Double strike, subscript and superscript.  The
  1220.       rules for the IBM Proprinter are somewhat different, see page 4-35
  1221.       of the Proprinter Guide to Operations.
  1222.  
  1223.          There is no problem invoking ^@P while your screen is in a
  1224.       graphics mode.  You cannot use the mode to print part of the screen
  1225.       in a useful way (although you could Switch to your monochrome
  1226.       monitor and Print part of it), but you can successfully send
  1227.       control codes to your printer.  When ^@P is invoked from a graphics
  1228.       screen, a certain amount of garbage will appear on the screen but
  1229.       that will disappear and your screen will be successfully restored
  1230.       when you <Esc> from the print control mode.
  1231.  
  1232.         Currently, the printer marking works perfectly on lines 1-25
  1233.       even when the EGA is in its 43 line mode.  However, you cannot mark
  1234.       more than one line below line 25 and you can only mark a line above
  1235.       the one you start on.  Moreover, the <A> command will only print
  1236.       the first 25 lines of the screen even if you have a line after the
  1237.       25th marked, but then again, Shift PrtSc also only prints the first
  1238.       25 lines displayed.  We hope to remove these limitations in a future
  1239.       version of CTRLALT.
  1240.  
  1241.             If you don't have your printer turned on and you invoke ^@P,
  1242.       if no printer is attached to your system or if you have a
  1243.       printer turned on but you have switched it off line by pushing an
  1244.       "Online" button and you invoke ^@P, CTRLALT will beep at you and
  1245.       refuse to come up.  If you have a print spooler resident, CTRLALT
  1246.       thinks that you have a printer attached and it will act normally
  1247.       passing characters to the spooler.
  1248.  
  1249.         If you have a two monitor system and set colors via ANSI.SYS
  1250.       in your prompt, the band in print control mode may appear invisible
  1251.       on your monochrome monitor.  The ^@Vanilla command should resolve
  1252.       this problem.  It is discussed in Section V.4.
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.      Chapter IV:PRINT CONTROL MODE                  Page 18
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.                 Chapter V: MARKING MODE
  1265.  
  1266.       Commands:^@<Enter>, ^@Vanilla, ^@Insert, ^@Quit
  1267.     Insertion Control Options: ^@Backspace,^@carriage Return, ^@Zilch
  1268.     Insertion Speed Controls: ^@+, ^@-
  1269.       ^@<Enter> Subcommands: <Enter>, <Ins>, Switch, <Esc>, <Arrows>,
  1270.                 <PgUp>, <PgDn>, <Grey +>, <Grey ->,
  1271.                 cUt, Copy, Print, Enter
  1272.  
  1273.       V.1 Marking a Rectangle
  1274.  
  1275.         ^@<Enter> brings up a solid block cursor at your present
  1276.       cursor position.    This cursor can be moved in the following ways:
  1277.         <Up Arrow> or <PgUp> moves it up
  1278.         <Down Arrow> or <PgDn> moves it down
  1279.         <Left Arrow> or <Grey -> moves it left
  1280.         <Right Arrow> or <Grey +> moves it right
  1281.         <Home> moves it to row 1, column 1
  1282.         <End> moves it to row 25, column 80
  1283.       In addition
  1284.         S  switches this block cursor to your other monitor
  1285.         <Esc> exits the marking module with no action being taken
  1286.  
  1287.         All the actions discussed in the next section can be taken
  1288.       with the one character box formed by the block cursor.  To get a
  1289.       bigger box, you must "tack down" one corner.  Pressing <Ins> or
  1290.       <Enter> tacks down the upper left corner of the box.  You can then
  1291.       move the lower right hand corner with the arrow keys so long as the
  1292.       box remains at least one row down and one column across.    Thus the
  1293.       arrow keys change the size of your box.  You can also move the box
  1294.       as a whole without changing its size: <PgUp> and <PgDn> move it up
  1295.       and down while <Grey +> and <Grey -> move it right and left.
  1296.       <Home> moves the upper left hand corner of your box to the upper
  1297.       left hand corner of the screen and <End> does the same with the
  1298.       lower right corners.  And S will switch the box from one screen to
  1299.       the other.
  1300.  
  1301.         The box will appear on a color screen in distinctive colors
  1302.       and on a monochrome screen in reverse video.  However, there may be
  1303.       a problem showing the box on your monochrome monitor if you set
  1304.       colors with an ANSI.SYS prompt; as we will discuss in the Usage
  1305.       Notes of this chapter, these problems may be resolved with the ^@V
  1306.       command.    You may also have problems with an invisible box on a
  1307.       black and white monitor attached to a graphics card such as the
  1308.       standard COMPAQ setup.  This can be solved by customizing the
  1309.       program according to the directions in Chapter IX.
  1310.  
  1311.  
  1312.       V.2 What you can do with the Marked Box
  1313.  
  1314.         Once you have a marked box on the screen, you can take the
  1315.       following actions:
  1316.         S    Switch the box to your other screen
  1317.  
  1318.  
  1319.      Chapter V:MARKING MODE                      Page 19
  1320.  
  1321.  
  1322.  
  1323.  
  1324.               Documentation for CTRLALT
  1325.  
  1326.  
  1327.         P    Print it on your printer (no filtering of control
  1328.             characters)
  1329.         E    Enter it at the position that your cursor had when
  1330.             you called up ^@<Enter>
  1331.         C    Copy it to the same position on your other monitor
  1332.         U    cUt it to the large buffer
  1333.         <Enter> has the same action as U
  1334.         <Ins> has the same action as U
  1335.         <Esc> exits marking mode with no action being taken
  1336.  
  1337.         For any of these actions except <S>, the box disappears, your
  1338.       screen is restored and you exit CTRLALT.    You can copy from your
  1339.       inactive to your active monitor but this will only affect what is
  1340.       displayed on the screen and is not the same as having typed in the
  1341.       characters.
  1342.  
  1343.         Using the E option not only enters the characters at your
  1344.       cursor position but also puts them in the large buffer.  The way
  1345.       the characters are entered is determined by the same options set in
  1346.       the insert mode and discussed in the next section.  That is, the
  1347.       option <E> is the same as <U> followed immediately by ^@I.
  1348.  
  1349.         The contents of the large buffer are only changed if you cUt
  1350.       or Enter the box in which case the box replaces what was in the
  1351.       buffer.  Options <P>, <C> and <Esc> do not change the contents of
  1352.       the large buffer.  As in the case of the small buffer which is not
  1353.       emptied in response to a ^@A or ^@H, the contents of the large
  1354.       buffer are not changed by a ^@<Enter> but only in response to some
  1355.       of its subcommands.
  1356.  
  1357.  
  1358.       V.3 Inserting the Large Buffer
  1359.  
  1360.             It wouldn't do much good to be able to put characters into
  1361.       the large buffer if there wasn't a way to get them out. ^@I will
  1362.       Insert (don't confuse ^@Insert with ^@<Ins>: the latter is NOT a
  1363.       CTRLALT command to avoid an accidental ^@<Del>) the contents of the
  1364.       large buffer as a series of keystrokes which are then acted upon by
  1365.       your application program.  The entire contents of the buffer will
  1366.       be entered and you will then exit CTRLALT.  The buffer is unchanged
  1367.       so you can reenter it with a second ^@I.    You can suspend the
  1368.       playback of the contents of the large buffer with ^@Q.  After using
  1369.       ^@Q to Quit, you are back in your application program.  A ^@I will
  1370.       reinsert the large buffer from its beginning while another ^@Q will
  1371.       continue the playback of the buffer at the point you quit with the
  1372.       first ^@Q.
  1373.  
  1374.         The large buffer stores a box and therefore more than one
  1375.       line of characters.  Depending on the application, you may want
  1376.       line ends to be treated in different way.  CTRLALT will treat line
  1377.  
  1378.  
  1379.      Chapter V:MARKING MODE                      Page 20
  1380.  
  1381.  
  1382.  
  1383.  
  1384.               Documentation for CTRLALT
  1385.  
  1386.  
  1387.       ends in one of three different ways.  You choose the entry mode
  1388.       with suitable ^@ commands:
  1389.         ^@R  carriage Return mode, the mode in which CTRLALT starts
  1390.         ^@B  Backspace mode
  1391.         ^@Z  Zilch mode
  1392.       You only need issue this command once and CTRLALT will remember it
  1393.       until you issue another one of them.  When ^@I is issued or the <E>
  1394.       subcommand is chosen from marking mode, CTRLALT uses the mode
  1395.       determined by the last of these three commands or it uses carriage
  1396.       Return mode if none of these commands has been issued since
  1397.       loading.
  1398.  
  1399.         In carriage Return mode, CTRLALT sends a carriage return
  1400.       (ASCII 013) at the end of each intermediate line in the buffer.
  1401.       This is precisely the code sent by the <Enter> key as you can check
  1402.       by using ^@T.  This is the proper mode to use in certain word
  1403.       processors.
  1404.  
  1405.         In Backspace mode, CTRLALT looks at the length of the lines
  1406.       in the buffer and sends a sequence of left arrow keystrokes
  1407.       followed by a down arrow at the conclusion of each line.    This will
  1408.       tend to produce a rectangular box in most word processors but you
  1409.       may have a problem if your word processor ignores down arrows
  1410.       issued at the bottom of a file.  This is also the slowest entry
  1411.       method.  Despite the name, it is <Left arrow>s and not <Backspace>s
  1412.       that are issued in this mode.
  1413.  
  1414.         In Zilch mode, as the name implies, CTRLALT sends no
  1415.       keystrokes at the end of a line but continues to send the
  1416.       characters on the next line.  If you don't want to preserve the box
  1417.       shape of what you put in the buffer and you are sending the
  1418.       characters to a word processor with word wrap, Zilch is probably
  1419.       for you.
  1420.  
  1421.         Not all applications can take keystrokes at the rate that
  1422.       CTRLALT supplies them.  For that reason, you can issue a command to
  1423.       CTRLALT to send keystrokes at a slower rate.  It will then issue
  1424.       keystrokes at that rate until its receives a command to use the
  1425.       faster rate.  The commands are:
  1426.         ^@-  use slower speed
  1427.         ^@+  use faster rate
  1428.       The + and - refer to the keys on the top row and not the <Grey +>
  1429.       and <Grey -> which are too close to <Del>.  By ^@+ we mean ^@ and
  1430.       the <+/=> key; you should NOT also depress a shift key.  By default
  1431.       CTRLALT starts in the fast mode.    PCWRITE in Backspace mode
  1432.       requires the slower speed to operate properly.
  1433.  
  1434.         While it is intended that you issue ^@+ and ^@- at a time
  1435.       when CTRLALT is not inserting keystrokes in response to a ^@I,
  1436.       there seems to be no problem issuing these commands while an
  1437.  
  1438.  
  1439.      Chapter V:MARKING MODE                      Page 21
  1440.  
  1441.  
  1442.  
  1443.  
  1444.               Documentation for CTRLALT
  1445.  
  1446.  
  1447.       insertion is in progress.  The results of issuing ^@R, ^@B or ^@Z
  1448.       during an insertion are unpredictable.
  1449.  
  1450.  
  1451.       V.4 Usage Notes
  1452.  
  1453.         The attributes used to display the difference between a box
  1454.       being made with CTRLALT and the ambient background are determined by
  1455.       a method which will show a multiply colored box overlaying a
  1456.       multiply colored screen.    On an ordinary monochrome monitor with
  1457.       the normal attributes for regular (07) and reverse video (70), the
  1458.       box shows as reverse video where it overlays ordinary text and
  1459.       ordinary video where it overlays reverse video.  However, if you
  1460.       have a two monitor system and set your prompt with ANSI.SYS, or if
  1461.       you are looking at the output of a program intended to run in
  1462.       color, the attributes on the monochrome screen may be non-standard.
  1463.       That is the bytes stored in memory will not be the usual 07
  1464.       although the screen will appear normal.  Thus if you use ANSI to
  1465.       set yellow on blue as the colors on your color screen while in DOS,
  1466.       the attributes which ANSI.SYS sets up when you're active on your
  1467.       monochrome screen will be 1E which appear as intense amber (or
  1468.       green) on black.    The algorithm used by CTRLALT will set the
  1469.       attributes in a box on the monochrome monitor to 69 which also
  1470.       appears as bright amber (or green) on black so the box is
  1471.       invisible!  For this situation, we have built in a special command
  1472.       ^@V which will change all the attributes on your monochrome screen
  1473.       to the plain Vanilla 07.    So if you are on the monochrome screen
  1474.       and your marking box appears to be invisible, do the following:
  1475.         <Esc> to exit marking mode
  1476.         ^@V to Vanillaize attributes
  1477.         ^@<Enter> to return to marking mode
  1478.       The marking box will not longer be invisible.  If you use ^@V
  1479.       before or without <Esc>aping first, the results will not be the
  1480.       desired ones and you should follow the above directions.    These
  1481.       comments apply also to print control mode.  If you are using the
  1482.       commercial program FANSI-CONSOLE, it uses a better algorithm for
  1483.       setting attributes on the monochrome screen and you will probably
  1484.       not have the same need for ^@V.
  1485.  
  1486.         As explained in Section III.5, text entered by CTRLALT is
  1487.       sent to your application as if it were entered via the alt-numeric
  1488.       keypad, i.e. with a reported scan code of 00.  This may affect
  1489.       how it is treated by certain keyboard macro programs especially
  1490.       those such as KEYWORKS that allow you to define macros on the alt-
  1491.       numeric keypad.  With such a program, it would be wise to restrict
  1492.       the numbers of these macros to the range 128-175 to avoid
  1493.       unexpected results when entering characters from the buffers or in
  1494.       the box drawing mode.
  1495.  
  1496.         The remarks made in Section IV.3 about the marking of lines
  1497.  
  1498.  
  1499.      Chapter V:MARKING MODE                      Page 22
  1500.  
  1501.  
  1502.  
  1503.  
  1504.               Documentation for CTRLALT
  1505.  
  1506.  
  1507.       on the EGA running in 43 line mode when in print control mode also
  1508.       apply to marking mode.
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.      Chapter V:MARKING MODE                      Page 23
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.                       ╒═══╕ ╓───────╖
  1567.               Chapter VI: │BOX│ ║DRAWING║
  1568.                       ╘═══╛ ╙───────╜
  1569.  
  1570.  
  1571.       COMMANDS: ^@<0>,^@<1>,...,^@<9>
  1572.         character type set with 0-6, cursor movement with 7,8,9
  1573.       SUBCOMMANDS: @<n0>,...,@<n9>,@<Grey +>,@<Grey ->
  1574.  
  1575.       VI.1 The Alt Numeric Keypad
  1576.  
  1577.         When IBM decided to develop an extended ASCII code covering
  1578.       the codes from 129 through 256, they included 40 box drawing
  1579.       characters to allow single line boxes, double line boxes and mixed
  1580.       boxes like those in the title of this chapter.  These characters
  1581.       display properly on the screen and on some printers (but the IBM
  1582.       graphics printer prints all graphics characters as single line
  1583.       characters, even the double line and mixed characters; the
  1584.       Proprinter prints them out as they appear on the screen) and they
  1585.       are much more elegant than what people try to put together with =,
  1586.       - and |.    Just compare
  1587.         ───────────────────── with -------------------
  1588.     or  ═════════════════════ with ===================
  1589.            │                |
  1590.            │                |
  1591.            │                |
  1592.     or       │          with        |
  1593.            │                |
  1594.            │                |
  1595.       The problem is that there is not any simple way of embedding
  1596.       graphics characters in your word processing files.  There are full
  1597.       featured monographics editing programs like MONOGRAFXS which are
  1598.       quite nice but they don't solve the problem of occasional use or
  1599.       the occasional user.  CTRLALT provides access to these box drawing
  1600.       characters in a simple and logical way.  The keystrokes that we use
  1601.       for this depend on exploiting a redundancy built into the standard
  1602.       keyboard setup.  One can always enter box characters by knowing
  1603.       their ASCII codes and using the <Alt> shift and the numeric keypad.
  1604.       For example, the corner └ has decimal ASCII code 192 so one can
  1605.       enter it by holding down the <Alt> key and pressing <n1>, <n9>,
  1606.       <n2> on the numeric keypad.  When you lift your finger off the
  1607.       <Alt> key, the └ should appear.  Try it in DOS.  The point is that
  1608.       you can get the same result by pressing the <Alt>-<Lft Shft>
  1609.       combination instead of the <Alt> key and this leaves the <Alt>
  1610.       keypad for other uses.  Of course, one can't get 40 characters out
  1611.       of a ten key keypad, so we use ^@numbers to shift between different
  1612.       templates for the keypad; one of the possibilities is ^@0(zero)
  1613.       which returns the alt-keypad to its usual state so you can continue
  1614.       to use it for entering ASCII codes or for use in your keyboard
  1615.       macro program which has a key like <AltEND>.  ^@1-4 will give
  1616.       templates with the various box characters and ^@5-6 yield some other
  1617.  
  1618.  
  1619.      Chapter VI:BOX DRAWING                      Page 24
  1620.  
  1621.  
  1622.  
  1623.  
  1624.               Documentation for CTRLALT
  1625.  
  1626.  
  1627.       useful extended ASCII characters.  ^@7-9 will control the cursor
  1628.       motion associated with the keys that send in the straight graphics
  1629.       characters.  Later in the chapter, tables will appear that should
  1630.       be useful if viewed on the screen.  Not all printers will print the
  1631.       graphics characters.
  1632.  
  1633.  
  1634.       VI.2 Box drawing characters
  1635.  
  1636.         The shape of the numeric keypad is perfect for associating to
  1637.       those graphics characters which are not straight.  This is one
  1638.       place where a picture is worth a thousand words so we show the
  1639.       keypad and the characters one obtains with them in the default ^@1
  1640.       mode:
  1641.  
  1642.         7  8  9             ┌    ┬  ┐
  1643.  
  1644.         4  5  6             ├    ┼  ┤
  1645.  
  1646.         1  2  3             └    ┴  ┘
  1647.                        ^@1
  1648.  
  1649.       so that @<n3> will give ┘ and @<n5> will give ┼.    There are two
  1650.       other single line characters, the straight lines ─ and │ and these
  1651.       are given by @<Grey -> and @<Grey +> respectively.  Of course - is
  1652.       a horizontal line and + has a vertical line.
  1653.  
  1654.         Similarly, ^@2 gives the double line characters, ^@3 the
  1655.       characters associated with double horizontal and single vertical
  1656.       while ^@4 is the reverse.  A mnemonic for remembering which is
  1657.       which is to note that the number 3 has more horizontal lines than
  1658.       vertical lines while 4 has more vertical than horizontal lines. In
  1659.       pictures:
  1660.  
  1661.      7  8  9    ╔  ╦  ╗      ╒  ╤  ╕      ╓  ╥    ╖
  1662.  
  1663.      4  5  6    ╠  ╬  ╣      ╞  ╪  ╡      ╟  ╫    ╢
  1664.  
  1665.      1  2  3    ╚  ╩  ╝      ╘  ╧  ╛      ╙  ╨    ╜
  1666.               ^@2           ^@3            ^@4
  1667.  
  1668.         Thus, for example to insert ╧, first hit ^@3 and then @<n2>.
  1669.       Until some other of ^@0-6 is struck, the @<n.> keys will then
  1670.       yield the characters shown above ^@3.
  1671.  
  1672.         In each case @<Grey+> and @<Grey -> give the vertical and
  1673.       horizontal line characters for the associated set (so, for example
  1674.       @<Grey -> gives ═ with ^@2 and ^@3 while @<Grey +> gives ║ with ^@2
  1675.       and ^@4).
  1676.  
  1677.  
  1678.  
  1679.      Chapter VI:BOX DRAWING                      Page 25
  1680.  
  1681.  
  1682.  
  1683.  
  1684.               Documentation for CTRLALT
  1685.  
  1686.  
  1687.  
  1688.       VI.3 Other graphics characters
  1689.  
  1690.         ^@5 and ^@6 give shading and Greek characters respectively as
  1691.       shown in:
  1692.  
  1693.       7  8    9          ▌  ▐  ▀              α  ß  τ
  1694.             ┌─┐          ┌─┐             ┌─┐
  1695.       4  5    6   │-│       █  ■  ▄     │«│          δ  ε  Θ     │Γ│
  1696.             ├─┤          ├─┤             ├─┤
  1697.       1  2    3   │+│       ░  ▒  ▓     │»│          µ  π  σ     │Σ│
  1698.             └─┘          └─┘             └─┘
  1699.                 ^@5            ^@6
  1700.  
  1701.       The shading characters shown in positions 7 and 8 look the same but
  1702.       occupy the left and right sides of a space so that @<n7>@<n8> is ▌▐
  1703.       while @<n8>@<n7> is ▐▌. Similarly positions 9 and 6 are top and
  1704.       bottom as in   ▀▄    and      ▄▀.  The characters on the Grey +/-
  1705.       make attractive patterns as in:
  1706.                 ««««««««»»»»»»»
  1707.                 »»»»»»»»»»»»»»»
  1708.  
  1709.         The way to remember the shading characters is that the
  1710.       shading gets darker as one runs from @<n1> to @<n4>, the left hand
  1711.       shading is to the left of the right hand shading (@<n7> and @<n8>)
  1712.       while the top half shading is on top of the bottom half shading.
  1713.  
  1714.         The Greek letters are in alphabetical order reading as if the
  1715.       keypad were a page rather than in numeric order and the Grey +/-
  1716.       have capital Greek letters.  Σ, the mathematical symbol for sum is
  1717.       associated to the plus key.  There are three additional Greek
  1718.       letters included in the IBM set: ASCII 232 Φ, 234 Ω and 237 φ not
  1719.       to mention the Greek letters that IBM doesn't recognize!
  1720.  
  1721.  
  1722.       VI.4 Cursor motion and <Grey +/->
  1723.  
  1724.         The three commands ^@7, ^@8, ^@9 control the way that the
  1725.       cursor moves when one issues an @<Grey +> or @<Grey -> keystroke.
  1726.       In the default mode, to which one can return with ^@8, the
  1727.       character is issued and the cursor moves right one position.  In
  1728.       the mode reached with ^@9, @<Grey -> works the same as in the
  1729.       default mode but for @<Grey +> the cursor moves down one row rather
  1730.       than right.  Thus one can draw a line downward by depressing the
  1731.       alt key and tapping the <Grey +> several times.  In the mode
  1732.       reached from ^@7, the cursor moves back one step after @<Grey ->
  1733.       and up one after @<Grey +>.
  1734.  
  1735.         These extra cursor modes are only operational when the
  1736.       @numeric keypad is in a mode set by one of the commands ^@1-4;
  1737.  
  1738.  
  1739.      Chapter VI:BOX DRAWING                      Page 26
  1740.  
  1741.  
  1742.  
  1743.  
  1744.               Documentation for CTRLALT
  1745.  
  1746.  
  1747.       there is no unusual cursor motion in the modes set by ^@0, ^@5 or
  1748.       ^@6.  But CTRLALT does remember the cursor movement mode that was
  1749.       set if you go, for example, from ^@1 to ^@6 and back to ^@1.
  1750.  
  1751.  
  1752.       VI.5 Usage Notes
  1753.  
  1754.         Notice that states of the Alt keypad numbers are set with ^@
  1755.       -top row number commands.  We want to be sure to keep your fingers
  1756.       away from an accidental ^@<Del>.
  1757.  
  1758.         The motion of the cursor when ^@7 or ^@9 is set is based on
  1759.       the assumptions that entering a character moves the cursor right
  1760.       one character and that arrow keys act in the conventional way.
  1761.       Thus the action of @<Grey +> in ^@9 mode is accomplished by sending
  1762.       the three keystrokes │ (ASCII 179), <Lft> (ASCII 00;75) and <Down>
  1763.       (ASCII 00;80).  If these assumptions are not met the results can be
  1764.       unexpected.
  1765.  
  1766.         In PCWRITE, there is a problem with the rapid entry of two
  1767.       <Lft>'s: the cursor moves left, not two but three spaces.  The
  1768.       @<Grey -> does not work properly in ^@7 mode when you are running
  1769.       PCWRITE.
  1770.  
  1771.         Keyboard macro programs typically allow you to define
  1772.       macros on keystrokes like <AltEND> if you hold down the <Alt> key
  1773.       and tap <End>.  These macros are still accessible to you if go into
  1774.       ^@0 mode.  What happens if you try to define such a macro on ^@<n1>
  1775.       if you are in a mode like ^@1 will depend on the particular macro
  1776.       program.    For example if you are using SUPERKEY, you will get the
  1777.       message that you are defining a macro based on └.  This means you
  1778.       can define not one <AltEND> macro but 7 of them and move between
  1779.       them with a choice from ^@0 to ^@6.  In KEYWORKS, the effect will
  1780.       be similar but instead of telling you that the macro is named "└",
  1781.       it will give you the name {{192} (192 is the decimal ASCII code for
  1782.       └).
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797.  
  1798.  
  1799.      Chapter VI:BOX DRAWING                      Page 27
  1800.  
  1801.  
  1802.  
  1803.  
  1804.  
  1805.  
  1806.             Chapter VII: THE EMERGENCY EXIT
  1807.  
  1808.  
  1809.       COMMAND: ^@<F9>
  1810.  
  1811.       VII.1 A Powerful but Dangerous Command
  1812.  
  1813.         CTRLALT provides a service which can be very useful but which
  1814.       can cause crashes and loss of work if not used properly.    We urge
  1815.       you to experiment with it before using it "under fire" and to read
  1816.       this ENTIRE chapter before doing any experimentation on your own.
  1817.       We have made the keystroke invoking this service ^@<F9> which is
  1818.       sufficiently awkward that it is unlikely you would issue it by
  1819.       mistake.    In particular, you can safely choose to ignore this
  1820.       chapter and the service provided if our warnings make you nervous
  1821.       (but we think that would be a mistake since the service can be
  1822.       useful).
  1823.  
  1824.         You have surely had the experience of your machine apparently
  1825.       locking up for no apparent reason or because you bumped the wrong
  1826.       key causing your application program to bomb.  There is no real
  1827.       excuse for applications programs to behave like that but some do
  1828.       because some programmer neglected to put error checking in one
  1829.       place or another.  In that situation, you have had to reboot or
  1830.       even turn the machine on and off.  ^@<F9> will occasionally save
  1831.       you when this happens.  This solution is not ideal; what ^@<F9>
  1832.       does is issue a call to DOS (service 4CH of interrupt 21H if you
  1833.       really want to know) to terminate the currently running program.
  1834.       Any work you did during the current session in that program and
  1835.       which you or the program did not explicitly save will be lost.  But
  1836.       if the exit is successful, you will not have to wait while your
  1837.       system boots up again nor will you lose the contents of your RAM
  1838.       disk, or anything left unsaved in resident programs like SIDEKICK's
  1839.       notepad.
  1840.  
  1841.         ^@<F9> is also useful for exiting certain game programs which
  1842.       do not give you any way of exiting to DOS but expect you to reboot
  1843.       the machine when you are finished playing.
  1844.  
  1845.         If you want to see ^@<F9> in action, you can try the
  1846.       following experiment.  Use DEBUG to make a little two byte program
  1847.       which will put your computer into an endless loop.  Here is how the
  1848.       debug session should look (WARNING: DO NOT THINK, "Oh I know how to
  1849.       do that in BASIC; it won't matter if I don't follow directions and
  1850.       use BASIC instead".  YOU WILL BE SORRY IF YOU TRY EXPERIMENTS WITH
  1851.       ^@<F9> AND BASIC BEFORE READING THIS CHAPTER!!):
  1852.  
  1853.  
  1854.  
  1855.  
  1856.  
  1857.  
  1858.  
  1859.      Chapter VII:THE EMERGENCY EXIT                  Page 28
  1860.  
  1861.  
  1862.  
  1863.  
  1864.               Documentation for CTRLALT
  1865.  
  1866.  
  1867.  
  1868.         >debug junk.com
  1869.         File not found
  1870.         -a
  1871.         xxxx:0100 jmp 100
  1872.         xxxx:0102
  1873.         -rcx
  1874.         CX 0000
  1875.         :2
  1876.         -w
  1877.         Writing 0002 bytes
  1878.         -q
  1879.  
  1880.             Here, "xxxx" is an irrelevant string of four hex digits.
  1881.  
  1882.         Merely making this program will not produce any effect but
  1883.       running it will.    So please be sure that CTRLALT has been installed
  1884.       and type in "junk" at the DOS command line.  The cursor will move
  1885.       down and sit there but the machine will respond to no normal
  1886.       keystrokes, even <Ctrl C> or <Ctrl Break>.  Your resident programs
  1887.       may still be accessible.    For example, when we tried the
  1888.       experiment, SIDEKICK could still be called up but SUPERKEY could
  1889.       not unless SIDEKICK was called up first.  When you've decided that
  1890.       you can't think of any way out but rebooting, use ^@<F9>.
  1891.       Impressed?  If you hit various keys in your attempt to exit they
  1892.       may now appear on the screen since they were put into the keyboard
  1893.       buffer and released when DOS came back (if you invoked SIDEKICK,
  1894.       it may have eaten the keys in the buffer so they may not appear).
  1895.  
  1896.  
  1897.       VII.2 Fouled Interrupts
  1898.  
  1899.             Generally, ^@<F9> will "work" at any time that the machine
  1900.       would respond to ^@<Del>.  If your machine is so dead that you must
  1901.       turn it on and off, ^@<F9> will certainly have no effect but it
  1902.       can't hurt to try.  And if ^@<F9> doesn't work, certainly try
  1903.       rebooting via ^@<Del> before giving up and powering off and on.
  1904.       There are times that ^@<F9> will successfully exit the running
  1905.       program and give you a DOS prompt but the machine will not respond
  1906.       to the keyboard.    This happens because while you successfully
  1907.       terminated the running program, the crash involved more than a
  1908.       logic loop in the program; a keyboard interrupt could be fouled or
  1909.       some aspect of DOS could be sick.  In that case, you'll have to
  1910.       reboot via ^@<Del>.  It should be possible to make a version of the
  1911.       RELEASE program mentioned below a resident part of CTRLALT which
  1912.       might probably save you in such situations and we may do that in a
  1913.       future release of CTRLALT.
  1914.  
  1915.         It is important that you understand in vague terms why this
  1916.       problem occurs.  When you strike a key on your keyboard, a signal
  1917.  
  1918.  
  1919.      Chapter VII:THE EMERGENCY EXIT                  Page 29
  1920.  
  1921.  
  1922.  
  1923.  
  1924.               Documentation for CTRLALT
  1925.  
  1926.  
  1927.       is sent to your CPU telling it to invoke a special program.  To
  1928.       find that program it looks at the four bytes starting at memory
  1929.       address 00024H (Interrupt 09H).  These four bytes are interpreted
  1930.       as a memory address and the computer looks to that memory address
  1931.       to find the special program to run.  Initially, the address is in
  1932.       the ROM, that is the memory "hard wired" into your machine.
  1933.       Keyboard macro programs work precisely by changing that address
  1934.       when they load.  The macro program puts the address of some of its
  1935.       code in memory location 00024H and the CPU then invokes the macro
  1936.       program whenever a key is struck.  Typically, the macro program
  1937.       will decide if the keystroke was "intended for it" and if not, it
  1938.       will then invoke the routine at what used to be called from address
  1939.       00024H.  Suppose somehow that the four bytes at address 00024H get
  1940.       changed in a random way.    Then, striking a key will call up an
  1941.       irrelevant program or even what the CPU would regard as pure
  1942.       babble.  Actually, if int 09H were fouled, ^@<F9> would not work
  1943.       but keyboard input in DOS involves an additional interrupt (16H)
  1944.       which could be fouled without affecting ^@<F9>.
  1945.  
  1946.         The point of giving you this technical discussion is that
  1947.       there are many interrupts besides 09H and 16H.  If they become
  1948.       fouled, you may not realize it since keystrokes will act normally
  1949.       but some other action like reading a disk or loading a program may
  1950.       cause your CPU to get babble.  There is another possible problem
  1951.       related to this.    Suppose the application program you loaded
  1952.       changed int 9H so that the application program directly processes
  1953.       keystrokes (two programs notorious for doing this are XYWRITE and
  1954.       SMARTCOM).  While ^@<F9> has exited the program, it has not removed
  1955.       the code for the program so that it could happen that the code for
  1956.       the exited program will continue to successfully process
  1957.       keystrokes.  However, exiting the program has told DOS that the
  1958.       memory can be used so that loading some other program overwrites
  1959.       the code that was processing keystrokes.    Since the address at int
  1960.       9H still points to the overwritten address, you have babble this
  1961.       way too.    Thus, ^@<F9> may get you out of trouble but lead to an
  1962.       unstable state.
  1963.  
  1964.         Fortunately, errors in the interrupt table or DOS (produced
  1965.       by an application program doing something stupid) are likely to so
  1966.       foul the system that you won't be fooled into thinking all is well.
  1967.       Thus the problem of merely apparent salvation will be associated
  1968.       with using the emergency exit from certain programs.  Which ones?
  1969.       We wish that we could tell you.  You will learn mainly by trial and
  1970.       error but it appears that many programs are safe.  Generally the
  1971.       one with problems are those that clearly don't "play by the rules".
  1972.       If your keyboard macro program doesn't work in an application, it
  1973.       is likely that it will produce an unstable state after an emergency
  1974.       exit.  And BASIC changes a whole bunch of interrupts so using
  1975.       ^@<F9> inside BASIC will cause an unstable state.  There may also
  1976.       be problems with complied BASIC programs.
  1977.  
  1978.  
  1979.      Chapter VII:THE EMERGENCY EXIT                  Page 30
  1980.  
  1981.  
  1982.  
  1983.  
  1984.               Documentation for CTRLALT
  1985.  
  1986.  
  1987.  
  1988.  
  1989.       VII.3 RELEASE: A Safety Valve
  1990.  
  1991.         With some advanced planning and the program RELEASE.COM
  1992.       (written by one of us - RMW - and in the public domain) which is
  1993.       included with this package, you can give yourself an extra safety
  1994.       valve to use when you have issued a ^@<F9> and are unsure of the
  1995.       state of your interrupt table.  RELEASE works in the following way:
  1996.       at any time you have a DOS prompt, you can run the RELEASE program
  1997.       by typing the command
  1998.         release FILENAME
  1999.       FILENAME can include an optional drive and directory name and must
  2000.       include a valid filename with NO extension.  If a drive and/or
  2001.       directory path are not given, RELEASE will use the current values.
  2002.       This command will create a file in the specified drive and
  2003.       directory with the name FILENAME.com.  If such a file previously
  2004.       exists RELEASE will erase it and replace it with the file it
  2005.       creates.  Thus "release B:\foo\george" will create george.com in
  2006.       the directory foo of drive B and any previous george.com in that
  2007.       directory will be eliminated.  If you later run the program
  2008.       george.com (by issuing the command "george" from the proper
  2009.       directory or having that directory in your DOS search path), the
  2010.       program will remove any programs loaded subsequently to your having
  2011.       run RELEASE and restore the interrupt table to its state at the
  2012.       time george.com was created.  In particular, it might pay to
  2013.       include the line "release aeend" near the end of your autoexec.bat
  2014.       file.  If you invoke ^@<F9> and are concerned about the stability
  2015.       of your system, just run aeend.  We have tested this procedure
  2016.       after exiting from BASIC with no later problems.    Of course, you
  2017.       may find RELEASE useful for memory management tasks other than just
  2018.       saving you after ^@<F9>.
  2019.  
  2020.  
  2021.       VII.4 Usage Notes
  2022.  
  2023.         It can happen that exiting a resident program like SIDEKICK
  2024.       especially when running an application program in graphics mode
  2025.       will fail to restore the screen.    This is a time when ^@<F9> will
  2026.       at least save you from rebooting.  However, you will lose any work
  2027.       which was not previously saved so you should try other methods like
  2028.       reinvoking the resident program or refreshing the screen in the
  2029.       application program by <PgUp> and <PgDn> if appropriate.
  2030.  
  2031.         Invoking ^@<F9> from a resident program like SIDEKICK is
  2032.       perfectly possible (although SIDEKICK is unlikely to lead to a
  2033.       situation where ^@<F9> is needed, we have known the system to lock
  2034.       up with SIDEKICK active due to a conflict with another resident
  2035.       program).  However, ^@<F9> issues a command to DOS to return to the
  2036.       DOS level so that ^@<F9> will not only terminate the resident
  2037.  
  2038.  
  2039.      Chapter VII:THE EMERGENCY EXIT                  Page 31
  2040.  
  2041.  
  2042.  
  2043.  
  2044.               Documentation for CTRLALT
  2045.  
  2046.  
  2047.       program but also the application program that was running when the
  2048.       resident program was invoked.  It may also happen that you are no
  2049.       longer able to call up the resident program with its hotkeys if you
  2050.       have exited it with ^@<F9>.  This will depend on the program and
  2051.       the state it is in when you invoke ^@<F9>.  For example, if you
  2052.       call up CTRLALT via ^@A and then use ^@<F9>, you will disable all
  2053.       the tables although the other features of CTRLALT will still be
  2054.       accessible.  This has to do with the internal structure of CTRLALT.
  2055.       CTRLALT saves the part of the screen replaced by a table in a
  2056.       special buffer in order to restore the screen upon exiting.  To
  2057.       save memory, only one buffer is kept which means that CTRLALT will
  2058.       not let you call up one table when another is currently active.  It
  2059.       does this by setting an internal flag saying a table is currently
  2060.       active.  When this flag is set, the four table commands ^@A,H,N,T
  2061.       have no effect.  Exiting a table with <Esc> resets the flag but
  2062.       exiting with ^@<F9> cannot reset the flag and thus the tables are
  2063.       disabled.  The point of this discussion is to explain why the
  2064.       behavior of a resident program exited with ^@<F9> will depend on
  2065.       the program and its current state.
  2066.  
  2067.         DOS has special rules for how its special processes act in
  2068.       response to ^@<F9>.  If a batch file is running and ^@<F9> is
  2069.       invoked, the batch file is not terminated.  If you have called up
  2070.       an application program with a batch file and you issue a ^@<F9>,
  2071.       you will exit that application program but the batch file will
  2072.       continue running (if you ever want to exit a running batch file,
  2073.       Ctrl-C or Ctrl-Break works fine).  If you are in a new shell of DOS
  2074.       ^@<F9> will return you to that shell and does not terminate the
  2075.       shell, that is ^@<F9> does not terminate the program command.com.
  2076.  
  2077.         The com files produced by RELEASE can be dangerous if run
  2078.       during a different session  where other programs are loaded.  For
  2079.       example, if you change your autoexec.bat file and later run an
  2080.       aeend file produced in an earlier session, you are bound to have a
  2081.       serious problem.    This is why RELEASE erases any file with the same
  2082.       name as the one you are trying to create.  To add to you safety, we
  2083.       recommend placing the com files made by RELEASE on a RAM disk if
  2084.       you have one.
  2085.  
  2086.         RELEASE does not know about Lotus/Intel/Microsoft EMS and
  2087.       will not properly free any EMS memory filled up between when
  2088.       RELEASE was run and when you run the com file RELEASE made.  There
  2089.       is a pair of public domain programs written by Turbo Power software
  2090.       called MARK and RELEASE (different RELEASE; if you have both rename
  2091.       one of them!) which serve a function similar to the RELEASE program
  2092.       discussed here but which includes EMS support.  However, you cannot
  2093.       use the MARK/RELEASE combination as a safety valve as described
  2094.       above.  If run after BASIC, the other RELEASE program will cause a
  2095.       dramatic hard crash.  The difference seems to be that the Turbo
  2096.       Power RELEASE, being a TURBO PASCAL program is large (about 13K)
  2097.  
  2098.  
  2099.      Chapter VII:THE EMERGENCY EXIT                  Page 32
  2100.  
  2101.  
  2102.  
  2103.  
  2104.               Documentation for CTRLALT
  2105.  
  2106.  
  2107.       while the com file made by Wilson's RELEASE is small (555 bytes)
  2108.       and so Turbo Power's RELEASE overwrites some code pointed to by an
  2109.       interrupt.  If you have both programs available and use EMS memory,
  2110.       you can first run Turbo Power's MARK and then Wilson's RELEASE at
  2111.       the end of your autoexec.bat file.  Then when trying to recover
  2112.       from a dangerous ^@<F9>, you first run the com file made by
  2113.       Wilson's RELEASE and then the Turbo Power RELEASE program.
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.      Chapter VII:THE EMERGENCY EXIT                  Page 33
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.       Chapter VIII: COMMAND SUMMARY
  2167.  
  2168.  
  2169.       Section numbers appear in parentheses
  2170.  
  2171.       ────────────────────────────────╥──────────────────────────────────
  2172.       ^@A   ASCII table (III.1-2)     ║ ^@U   NOT USED
  2173.       ^@B   Backspace mode (V.3)      ║ ^@V   Vanilla (V.4)
  2174.       ^@C   Copy screen (II.1)          ║ ^@W   NOT USED
  2175.       ^@D   NOT USED              ║ ^@X   NOT USED
  2176.       ^@E   Enter small buffer (III.2)║ ^@Y   NOT USED
  2177.       ^@F   NOT USED              ║ ^@Z   Zilch mode (V.3)
  2178.       ^@G   NOT USED              ║ ^@<F9>     Emergency Exit to DOS (VII)
  2179.       ^@H   Hex table (III.1-2)       ║ ^@<Enter>   Marking Mode (V.1,2)
  2180.       ^@I   Insert large buffer (V.3) ║ ^@<=/+>   Fast Insert Mode (V.3)
  2181.       ^@J   NOT USED              ║ ^@<-/_>   Slow Insert Mode (V.3)
  2182.       ^@K   Kill other screen (II.1)  ║ ^@1   └ ┴ ┘ ├ ┼ ┤ ┌ ┬ ┐ mode (VI.2)
  2183.       ^@L   NOT USED              ║ ^@2   ╚ ╩ ╝ ╠ ╬ ╣ ╔ ╦ ╗ mode(VI.2)
  2184.       ^@M   NOT USED              ║ ^@3   ╘ ╧ ╛ ╞ ╪ ╡ ╒ ╤ ╕ mode(VI.2)
  2185.       ^@N   aNsi table (III.3)          ║ ^@4   ╙ ╨ ╜ ╟ ╫ ╢ ╓ ╥ ╖ mode(VI.2)
  2186.       ^@O   tbls on Other scrn (III.1)║ ^@5   ░ ▒ ▓ █ ■ ▄ ▌ ▐ ▀ mode(VI.3)
  2187.       ^@P   Print control mode          ║ ^@6   µ π σ δ ε Θ α ß τ mode(VI.3)
  2188.       ^@Q   Quit buffer insert (V.3)  ║ ^@7   - left; + up mode (VI.4)
  2189.       ^@R   carriage Return mode (V.3)║ ^@8   normal alt <Grey +/-> (VI.4)
  2190.       ^@S   Switch monitors          ║ ^@9   - right; + down mode (VI.4)
  2191.       ^@T   aTtribute table (III.3)   ║ ^@0   @Keypad in standard mode
  2192.       ────────────────────────────────╨──────────────────────────────────
  2193.  
  2194.       ^@A,^@H subcommands: E(nter), P(rint), B(uffer), Arrows, <Esc>
  2195.       ^@P subcommands: <Up>,<Down>,<PgUp>,<PgDn>,S(witch),P(rint),
  2196.             A(ll), various escape codes to printer
  2197.       ^@<Enter> subcommands: Arrows, <Enter> or <Ins> to tack down
  2198.             Arrows, <PgUp>,<PgDn>,<Grey +>,<Grey ->
  2199.             S(witch), C(opy), P(rint),
  2200.             (c)U(t)=<Enter>=<Ins>
  2201.       ^@1-6: @numeric keypad, @<Grey +>, @<Grey ->
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.  
  2217.  
  2218.  
  2219.      Chapter VIII:COMMAND SUMMARY                  Page 34
  2220.  
  2221.  
  2222.  
  2223.  
  2224.  
  2225.  
  2226.              Chapter IX:CUSTOMIZING CTRLALT
  2227.  
  2228.  
  2229.  
  2230.       IX.1 The Procedure
  2231.  
  2232.         If you have access to the IBM or Microsoft Macro Assembler,
  2233.       it is quite easy to customize CTRLALT.  In the last section, we
  2234.       will even give you directions for using DEBUG to change some of the
  2235.       parameters if you do not have the Macro Assembler and you still
  2236.       wish to change some of the more important parameters.  If you wish
  2237.       to customize CTRLALT and have the Macro Assembler, you should take
  2238.       the source code file ctrlalt.asm and make a copy with a convenient
  2239.       name, say mycalt.asm and do the following: first edit the file with
  2240.       an ASCII file editor or word processor capable of producing pure
  2241.       ASCII text.  For example, PCWrite was used to edit the original
  2242.       source file.  Editing directions will be found in Sections 2-8 of
  2243.       this chapter.  After editing mycalt.asm you will need to issue the
  2244.       sequence of commands:
  2245.         masm mycalt;
  2246.         link mycalt;
  2247.         exe2bin mycalt mycalt.com
  2248.       You might care to then erase mycalt.obj and mycalt.exe.
  2249.  
  2250.         The source code begins with eight parts separated by a line
  2251.       of dashes before the code itself which is separated from the
  2252.       preliminaries by a line of #'s.  Part 1 has the copyright and other
  2253.       goodies.    We will refer to places to change by the parts and lines
  2254.       in the parts.
  2255.  
  2256.  
  2257.       IX.2 Fundamental key combination
  2258.  
  2259.             The last line of part 2 (line 23) says "call combo = 0CH".
  2260.       This sets the Ctrl and Alt keys as the basic call up combination.
  2261.       Change 0CH to xxH as indicated below for the key combination
  2262.       indicated:
  2263.  
  2264.         0CH     Ctrl-Alt
  2265.         06H     Ctrl-LShift
  2266.         0AH     Alt-LShift
  2267.         03H     RShift-LShift
  2268.         05H     Ctrl-RShift
  2269.         09H     Alt-RShift
  2270.         01H     Right Shift alone
  2271.         02H     Left Shift alone
  2272.         04H     Ctrl alone
  2273.         08H     Alt alone
  2274.  
  2275.         We believe that the first two possibilities are the preferred
  2276.       one; you should save the Alt-LShift combination for the Alt-numeric
  2277.  
  2278.  
  2279.      Chapter IX:CUSTOMIZING CTRLALT                  Page 35
  2280.  
  2281.  
  2282.  
  2283.  
  2284.               Documentation for CTRLALT
  2285.  
  2286.  
  2287.       keypad.  Combination with the right shift are awkward.  It is
  2288.       possible to use only a single shift with letters to call up CTRLALT
  2289.       but this will disable many key combinations needed by other
  2290.       programs (but you could, if desperate dedicate one of your shifts
  2291.       to CTRLALT but shouldn't unless you are a real hunt and peek
  2292.       typist).
  2293.  
  2294.  
  2295.       IX.3 Command Keys
  2296.  
  2297.         The fourth section of the code begins:
  2298.  
  2299.             ;**** SCAN CODES FOR COMMAND KEYS FOLLOW:
  2300.       commands db 1FH,2EH,25H,18H,1EH,19H,23H,43H
  2301.            db 1CH,17H,10H,0CH,0DH,30H,12H
  2302.            db 0BH,2,3,4,5,6,7
  2303.            db 14H,13H,8,9,0AH
  2304.            db 2FH,2CH,31H
  2305.  
  2306.         These five line correspond to the basic command combinations:
  2307.  
  2308.             ^@S,^@C,^@K,^@O("oh"),^@A,^@P,^@H,^@<F9>
  2309.         ^@<Enter>,^@I,^@Q,^@<-/_>,^@<+/=>,^@B,^@E
  2310.         ^@0,^@1,^@2,^@3,^@4,^@5,^@6
  2311.         ^@T,^@R,^@7,^@8,^@9
  2312.         ^@V,^@Z,^@N
  2313.  
  2314.         Suppose that you wish to change the callup for print control
  2315.       mode from ^@P to ^@<PrtSc> which you might because you own a
  2316.       program that already uses ^@P as its  callup  command.  You  search
  2317.       for ^@P (the default in the second of the tables above) or
  2318.       alternately  get the scan code in HEX for <P> (using ^@T;  the scan
  2319.       code is 19) and search for it in the first table above.  This tells
  2320.       you that you need to change the sixth entry in line 1 of the
  2321.       section  "SCAN CODES FOR COMMAND KEYS FOLLOW:".  You find the scan
  2322.       code for <PrtSc/*> which is 37H and modify that entry in line one
  2323.       in the source file mycalt.asm.  It should now read:
  2324.  
  2325.        commands db 1FH,2EH,25H,18H,1EH,37H,23H,43H
  2326.  
  2327.       In making these changes keep the following in mind:
  2328.         -You must use the hex scan codes; the basic manual lists scan
  2329.          codes in hex but of course, it is easier to use ^@T
  2330.         -Unless the scan code is less than 9, you must include an H
  2331.             -Beware that the number key "n" has scan code "n+1"
  2332.  
  2333.       IMPORTANT: If you want to disable a CTRLALT module, just change its
  2334.       call up key code to 0FFH.  (The 0 is important!).  For example, if
  2335.       you have a single monitor system, we recommend disabling the four
  2336.       basic dual monitor commands so the first line should read:
  2337.  
  2338.  
  2339.      Chapter IX:CUSTOMIZING CTRLALT                  Page 36
  2340.  
  2341.  
  2342.  
  2343.  
  2344.               Documentation for CTRLALT
  2345.  
  2346.  
  2347.  
  2348.        commands db 0FFH,0FFH,0FFH,0FFH,1EH,37H,23H,43H
  2349.  
  2350.       There are also subcommands which can be changed.    These occur in
  2351.       sections 5-7 of the initial stuff.  We leave it to the user to
  2352.       puzzle out the meanings of the funny labels or to use the scan
  2353.       codes except to note that with a singe monitor system you should
  2354.       disable the <S> subcommands by changing the 1FH that appears on the
  2355.       line in section 5 beginning "prtcoms" and the 1FH that appears on
  2356.       the third line in section 6 to a 0FFH.
  2357.  
  2358.  
  2359.       IX.4 Table Colors
  2360.  
  2361.             If you don't like the color which we have picked for the
  2362.       various tables, the first 7 lines in section 2 of the code deal
  2363.       with those.  The attributes for the borders of the table on the
  2364.       color monitor (default of 19H=bright blue on blue) are called
  2365.       "border", the attributes for the numbers and labels (default of
  2366.       1FH=white on blue) are called "background" and the attributes for
  2367.       the actual characters (default of 30H=black on cyan) are called
  2368.       "mainattr".  There are similar labels for the monochrome screen.
  2369.       The scan code and aNsi labels have attributes (default 1B=bright
  2370.       cyan on blue) have the name "attrlabel".  We recommend the
  2371.       following changes for the COMPAQ dual mode monitors:
  2372.         mainattr = 0FH
  2373.         attrlabel = 10H
  2374.  
  2375.  
  2376.       IX.5 Table Locations
  2377.  
  2378.             If you don't like the locations that we have chosen for the
  2379.       tables, you can change them but not dynamically.    That is you can
  2380.       make a permanent change but if a table comes up in a bad place one
  2381.       time there is nothing that you can do (at least for this version of
  2382.       CTRLALT).  The upper left hand corners of the tables are determined
  2383.       by decimal numbers occurring in section 2 of the code with "begoff"
  2384.       labels.  These numbers MUST be even.  If you want to locate the
  2385.       corner in column y of row x this number should be 160x+2y with the
  2386.       convention that rows are labelled 0-24 and columns 0-79.    If you
  2387.       make y too close to 79 the table will line wrap and look rather
  2388.       funny.  In addition, you need to be careful that positions of the
  2389.       ASCII and Hex tables don't overlap or else ^@O will produce an
  2390.       improper display.
  2391.  
  2392.  
  2393.       IX.6 Copy Attributes
  2394.  
  2395.         You can change the colors used when ^@C is invoked.  The
  2396.       comments in section 2 of the source code are clear on this account.
  2397.  
  2398.  
  2399.      Chapter IX:CUSTOMIZING CTRLALT                  Page 37
  2400.  
  2401.  
  2402.  
  2403.  
  2404.               Documentation for CTRLALT
  2405.  
  2406.  
  2407.  
  2408.  
  2409.       IX.7 XOR Attributes
  2410.  
  2411.         The cursor in the ASCII/Hex tables and in the ^@<Enter>/^@P
  2412.       modes has colors set by "xoring" the present attributes with
  2413.       attributes given in the source code.  This is not the place to
  2414.       explain that algorithm.  We recommend the following changes for the
  2415.       COMPAQ dual mode monitor:
  2416.         colxor = 27H
  2417.         ascolxor = 7FH
  2418.  
  2419.  
  2420.       IX.8 Printer Escape Sequences
  2421.  
  2422.         The eighth section of the source file lists the decimal ASCII
  2423.       sequences sent to the printer by the various letter subcommands in
  2424.       ^@P.  You can change these sequences if your printer does not use
  2425.       IBM graphics control sequences.  For example with the Epson LQ-1500
  2426.       whose NLQ mode is called up with a distinct sequence to that used
  2427.       by the Proprinter, you would  replace the line
  2428.         qual     db  27,73,2,0FFH    ;proprinter
  2429.       with
  2430.         qual     db  27,126,1,0FFH    ;LQ-1500
  2431.  
  2432.             Please add "0FFH" to the end of the sequence listed in your
  2433.       printer manual.  That code is used for CTRLALT's internal purposes.
  2434.  
  2435.  
  2436.  
  2437.       IX.9 Using DEBUG
  2438.  
  2439.       The table below gives various addresses for using DEBUG to
  2440.       change certain bytes in the com file:
  2441.  
  2442.         Function     ║    Byte(Hex; offset 100H)  ║  Default(Hex)
  2443.       ───────────────────╫────────────────────────────╫─────────────────
  2444.         CallUp     ║     2BE              ║      0C
  2445.         ^@S      ║     14F              ║      1F
  2446.         ^@C      ║     150              ║      2E
  2447.         ^@K      ║     151              ║      25
  2448.         ^@O      ║     152              ║      18
  2449.         ^@P:Switch     ║     1B1              ║      1F
  2450.         ^@<Enter>:S  ║     20D              ║      1F
  2451.         Mainattr     ║     86D              ║      30
  2452.         Attrlabel     ║     527,784,8DB,8F4      ║      1B
  2453.         Colxor     ║     36F              ║      2A
  2454.         Ascolxor     ║     928              ║      5F
  2455.  
  2456.       The callup function is discussed in Section IX.2; the other
  2457.  
  2458.  
  2459.      Chapter IX:CUSTOMIZING CTRLALT                  Page 38
  2460.  
  2461.  
  2462.  
  2463.  
  2464.               Documentation for CTRLALT
  2465.  
  2466.  
  2467.       functions involve things we recommend changing for the COMPAQ dual
  2468.       mode monitor (disable the 6 monitor switches and follow the
  2469.       recommendations in Sections IX.4 and IX.6 for attributes).  Here is
  2470.       a trial debug session modifying CTRLALT for the COMPAQ.  It assumes
  2471.       that you have copied ctrlalt.com to cacmq.com:
  2472.  
  2473.         >debug cacmq.com
  2474.         -e14f
  2475.         xxxx:014F  1F.ff
  2476.         -e150
  2477.         xxxx:0150  2E.ff
  2478.         -e151
  2479.         xxxx:0151  25.ff
  2480.         -e152
  2481.         xxxx:0152  18.ff
  2482.         -e1b1
  2483.         xxxx:01B1  1F.ff
  2484.         -e20d
  2485.         xxxx:020D  1F.ff
  2486.         -e86d
  2487.         xxxx:086D  30.0f
  2488.         -e527
  2489.         xxxx:0527  1B.10
  2490.         -e784
  2491.         xxxx:0784  1B.10
  2492.         -e8db
  2493.         xxxx:08DB  1B.10
  2494.         -e8f4
  2495.         xxxx:08F4  1B.10
  2496.         -e36f
  2497.         xxxx:036F  2A.27
  2498.         -e928
  2499.         xxxx:0928  5F.7F
  2500.         -w
  2501.         Writing 0E36 bytes
  2502.         -q
  2503.  
  2504.             In the above, "xxxx" is an irrelevant four digit hex number.
  2505.       The "e" command tells debug that you want a byte displayed and want
  2506.       the option to change it.    For example when you type in
  2507.       "e928<Enter>" in response to the debug "-" prompt, debug responds
  2508.             "xxxx:0928 5F."
  2509.       telling you that 5F is currently there.  You type in "7F<Enter>".
  2510.       You could shorten things by just typing "e928 7F" in which case
  2511.       debug would make the change and not report anything but we believe
  2512.       the error checking of seeing the current byte displayed is useful.
  2513.  
  2514.  
  2515.  
  2516.  
  2517.  
  2518.  
  2519.      Chapter IX:CUSTOMIZING CTRLALT                  Page 39
  2520.  
  2521.  
  2522.  
  2523.